home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / tip / texipexp.tex (.txt) < prev    next >
Texinfo Document  |  1993-09-15  |  183KB  |  6,295 lines

  1. % This is the inputd format source code file in a flat version
  2. % This file is generated based on running initex with all files
  3. % belonging to this format. Do NOT change this file, because
  4. % it is automatically generated directly from all the .tip
  5. % files. The same copyright which applies to the individual .tip
  6. % files applies to this file too, obviously
  7. % This macro source file is from the four volume series
  8. % \"TeX in Practice\" by Stephan von Bechtolsheim, published
  9. % 1993 by Springer-Verlag, New York.
  10. % Copyright 1993 Stephan von Bechtolsheim.
  11. % No warranty or liability is assumed.
  12. % This macro may be copied freely if no fees other than
  13. % media cost or shipping charges are charged and as long
  14. % as this copyright and the following source code itself
  15. % is not changed. Please see the series for further information.
  16. \input plain.tex
  17. \def\InputD #1{} \def\InputDList{}
  18. \catcode`\@ = 11
  19. \def\NameDef #1{% 
  20.     \expandafter\def\csname #1\endcsname
  21. \def\NameEdef #1{%
  22.     \expandafter\edef\csname #1\endcsname
  23. \def\NameGdef #1{% 
  24.     \expandafter\gdef\csname #1\endcsname
  25. \def\NameXdef #1{% 
  26.     \expandafter\xdef\csname #1\endcsname
  27. \def\NameNewDef #1{% 
  28.     \if\NameDefinedConditional{#1}% 
  29.         \errmessage{\string\NameNewDef: "#1" already defined.}% 
  30.     \fi
  31.     \NameDef{#1}% 
  32. \def\NameReDef #1{% 
  33.     \if\NameDefinedConditional{#1}%
  34.     \else
  35.         \errmessage{\string\NameReDef: "#1" never defined before.}% 
  36.     \fi
  37.     \NameDef{#1}% 
  38. \def\NameUse #1{\csname #1\endcsname}
  39. \def\NameUseFlagUndefined #1{% 
  40.     \if\NameDefinedConditional{#1}%
  41.         \NameUse{#1}%
  42.     \else
  43.         \errmessage{\string\NameUseFlagUndefined: token "#1"
  44.             is undefined.}%
  45.     \fi
  46. \newif\if@NameDefined
  47. \def\NameDefinedConditional #1{% 
  48.     TT\fi
  49.     \expandafter\ifx\csname #1\endcsname \relax
  50.         \@NameDefinedfalse
  51.     \else
  52.         \@NameDefinedtrue
  53.     \fi
  54.     \if@NameDefined
  55. \catcode`\@ = 12
  56. \NameDef{@InputD-namedef.tip}{}
  57. \def\AbsoluteDimension #1#2{% 
  58.     \ifdim #1 < 0pt
  59.         #2 = -#1\relax
  60.     \else
  61.         #2 = #1\relax
  62.     \fi
  63. \NameDef{@InputD-absdimen.tip}{}
  64. \def\AbsoluteValue #1#2{% 
  65.     \ifnum #1<0
  66.         #2 = -#1\relax
  67.     \else
  68.         #2 = #1\relax
  69.     \fi
  70. \NameDef{@InputD-absval.tip}{}
  71. \def\DefineAcronym #1#2#3{% 
  72.     \def #1{% 
  73.         #2 (#3)%
  74.         \gdef#1{#2}%
  75.     }%
  76. \NameDef{@InputD-acronym.tip}{}
  77. \catcode`\@ = 11
  78. \newcount\@DoLoopNesting
  79. \@DoLoopNesting = 0
  80. \newcount\@DoLoopLimit
  81. \newcount\@DoLoopLimitTwo
  82. \newcount\@DoLoopLimitThree
  83. \def\DoLoop #1#2#3#4#5{%
  84.     \global\advance\@DoLoopNesting by 1
  85.     \ifnum\@DoLoopNesting > 3
  86.         \errmessage{\string\DoLoop: nesting beyond three levels
  87.             is not supported.}%
  88.     \fi
  89.     \ifnum #3 = 0
  90.         \errmessage{\string\DoLoop: step value (parameter 3) is 0!}% 
  91.     \else
  92.         \ifcase\@DoLoopNesting
  93.         \or
  94.             \@DoLoop{#1}{#2}{#3}{#4}{#5}%
  95.             {\@DoLoopLimit}{\DoLoopBody}%
  96.         \or
  97.             \@DoLoop{#1}{#2}{#3}{#4}{#5}%
  98.             {\@DoLoopLimitTwo}{\DoLoopBodyTwo}%
  99.         \or
  100.             \@DoLoop{#1}{#2}{#3}{#4}{#5}%
  101.             {\@DoLoopLimitThree}{\DoLoopBodyThree}%
  102.         \fi
  103.     \fi
  104.     \global\advance\@DoLoopNesting by -1
  105. \def\@DoLoop #1#2#3#4#5#6#7{%
  106.     \ifnum #3 > 0
  107.         #6 = #4% 
  108.         \advance#6 by 1
  109.         #1 = #2% 
  110.         \@DoLoopBodyPositive{#1}{#3}{#5}% 
  111.             {#6}{#7}%
  112.     \else
  113.         #6 = #4% 
  114.         \advance#6 by -1
  115.         #1 = #2% 
  116.         \@DoLoopBodyNegative{#1}{#3}{#5}% 
  117.             {#6}{#7}%
  118.     \fi
  119.     \@DoLoopIterate{#7}%
  120. \def\@DoLoopBodyPositive #1#2#3#4#5{%
  121.     \def #5{% 
  122.         \ifnum #1 < #4\relax
  123.             #3% 
  124.             \advance #1 by #2% 
  125.     }%
  126. \def\@DoLoopBodyNegative #1#2#3#4#5{%
  127.     \def #5{%
  128.         \ifnum #1 > #4\relax
  129.             #3% 
  130.             \advance #1 by #2% 
  131.     }% 
  132. \def\@DoLoopIterate #1{%
  133.         #1\relax
  134.         \def\@DoLoopNext{\@DoLoopIterate{#1}}%
  135.     \else
  136.         \def\@DoLoopNext{\relax}%
  137.     \fi
  138.     \@DoLoopNext
  139. \catcode`\@ = 12
  140. \NameDef{@InputD-doloop.tip}{}
  141. \catcode`\@ = 11
  142. \newcount\AdvanceByTabStopsCount
  143. \def\AdvanceByTabStops #1{%
  144.     \def\@MakeTabChars{}%
  145.     \DoLoop{\AdvanceByTabStopsCount}{2}{1}{#1}% 
  146.             {\edef\@MakeTabChars{\@MakeTabChars&}}% 
  147.     \@MakeTabChars
  148. \catcode`\@ = 12
  149. \NameDef{@InputD-advtabst.tip}{}
  150. \newtoks\AfterEveryPar
  151. \AfterEveryPar = {}
  152. \catcode`\@ = 11
  153. \def\SetUpAfterEveryPar{% 
  154.     \def\par{% 
  155.         \ifhmode
  156.             \ifinner
  157.             \else
  158.                 \endgraf
  159.                 \the\AfterEveryPar
  160.             \fi
  161.         \fi
  162.     }% 
  163. \catcode`\@ = 12
  164. \NameDef{@InputD-aevpar.tip}{}
  165. \catcode`\@ = 11
  166. \newif\if@InRange
  167. \def\InRangeConditional #1#2#3{%
  168.     TT\fi
  169.     \@InRangetrue
  170.     \ifnum #1<#2\relax
  171.         \@InRangefalse
  172.     \fi
  173.     \ifnum #1>#3\relax
  174.         \@InRangefalse
  175.     \fi
  176.     \if@InRange
  177. \def\CheckRange #1#2#3#4{% 
  178.     \ifnum #1 < #2\relax
  179.         \errmessage{Value \number#1 \space out of range #2..#3: #4}%
  180.     \fi
  181.     \ifnum #1>#3\relax
  182.         \errmessage{Value \number#1 \space out of range #2..#3: #4}%
  183.     \fi
  184. \def\CheckZeroOneRange #1#2{% 
  185.     \CheckRange{#1}{0}{1}{#2}%
  186. \catcode`\@ = 12
  187. \NameDef{@InputD-rangetst.tip}{}
  188. \catcode`\@ = 11
  189. \def\Sunday{0}
  190. \def\Monday{1}
  191. \def\Tuesday{2}
  192. \def\Wednesday{3}
  193. \def\Thursday{4}
  194. \def\Friday{5}
  195. \def\Saturday{6}
  196. \def\ProvideDayOfWeek #1#2#3{%
  197.     \CheckRange{#1}{0}{6}%
  198.         {\string\ProvideDayOfWeek: day of week outside
  199.             of 0 .. 6 range.}%
  200.     \ifcase #1\relax
  201.         \def#3{Sunday}\or
  202.         \def#3{Monday}\or
  203.         \def#3{Tuesday}\or
  204.         \def#3{Wednesday}\or
  205.         \def#3{Thursday}\or
  206.         \def#3{Friday}\or
  207.         \def#3{Saturday}% 
  208.     \fi
  209.     \ifnum #2 = 0
  210.     \else
  211.         \def\@ProvideDayOfWeek ##1##2##3##4;{%
  212.             \def#3{##1##2##3}%
  213.         }%
  214.         \expandafter\@ProvideDayOfWeek#3;%
  215.     \fi     
  216. \def\PrintDayOfWeek #1#2{%
  217.     \ProvideDayOfWeek{#1}{#2}{\@PrintDayOfWeek}%
  218.     \@PrintDayOfWeek
  219. \catcode`\@ = 12
  220. \NameDef{@InputD-dateofw.tip}{}
  221. \def\CheckLegalMonth #1{%
  222.     \CheckRange{#1}{1}{12}% 
  223.     {\string\CheckLegalMonth: month #1 out of range.}%
  224. \NameDef{@InputD-legmonth.tip}{}
  225. \def\CheckLegalYear #1{%
  226.     \ifnum #1 < \EarliestYearDate
  227.         \errmessage{\string\CheckLegalYear: year #1
  228.             < \the\EarliestYearDate\space
  229.             encountered, illegal.}%
  230.     \fi
  231. \NameDef{@InputD-legyear.tip}{}
  232. \catcode`\@ = 11
  233. \newcount\@IModNCount
  234. \newcount\@IModNCountCopy
  235. \def\IModN #1#2#3{%
  236.     \@IModNCount = #1\relax
  237.     \@IModNCountCopy = #1\relax
  238.     \ifnum \@IModNCount < 0
  239.         \errmessage{\string\IModN: \string#1
  240.             (value \the\@IModNCount) is negative.}%
  241.     \fi
  242.     \ifnum #2< 1
  243.         \errmessage{\string\IModN: \string#2
  244.             (value #2) is negative or zero.}%
  245.     \fi
  246.     \divide\@IModNCount by #2\relax
  247.     \multiply\@IModNCount by #2\relax
  248.     #3 = \@IModNCountCopy
  249.     \advance #3by -\@IModNCount
  250. \catcode`\@ = 12
  251. \NameDef{@InputD-imodn.tip}{}
  252. \catcode`\@ = 11
  253. \newif\if@LeapYear
  254. \def\LeapYearConditional #1{%
  255.     TT\fi
  256.     {%
  257.         \count0 = #1\relax
  258.         \IModN{\count0}{4}{\count1}%
  259.         \ifnum\count1 = 0
  260.             \global\@LeapYeartrue
  261.             \IModN{\count0}{100}{\count2}%
  262.             \IModN{\count0}{400}{\count3}%
  263.             \ifnum\count2 = 0
  264.                 \global\@LeapYearfalse
  265.             \fi
  266.             \ifnum\count3 = 0
  267.                 \global\@LeapYeartrue
  268.             \fi
  269.         \else
  270.             \global\@LeapYearfalse
  271.         \fi
  272.     }%
  273.     \if@LeapYear
  274. \catcode`\@ = 12
  275. \NameDef{@InputD-isleapyr.tip}{}
  276. \def\NumberOfDaysInMonth #1#2#3{%
  277.     \CheckLegalYear{#1}%
  278.     \CheckLegalMonth{#2}%
  279.     \ifcase #2\relax
  280.     \or
  281.         #3 = 31
  282.     \or
  283.         #3 = 28
  284.         \if\LeapYearConditional{#1}%
  285.             #3 = 29
  286.         \fi
  287.     \or
  288.         #3 = 31
  289.     \or
  290.         #3 = 30
  291.     \or
  292.         #3 = 31
  293.     \or
  294.         #3 = 30
  295.     \or
  296.         #3 = 31
  297.     \or
  298.         #3 = 31
  299.     \or
  300.         #3 = 30
  301.     \or
  302.         #3 = 31
  303.     \or
  304.         #3 = 30
  305.     \or
  306.         #3 = 31
  307.     \fi
  308. \NameDef{@InputD-ndaysmo.tip}{}
  309. \catcode`\@ = 11
  310. \newcount\@TempCheckDate
  311. \def\CheckDate #1#2#3{% 
  312.     \CheckLegalYear{#1}%
  313.     \CheckLegalMonth{#2}%
  314.     \NumberOfDaysInMonth{#1}{#2}{\@TempCheckDate}%
  315.     \CheckRange{#3}{1}{\@TempCheckDate}%
  316.         {\string\CheckDate: provided date #1-#2-#3 is illegal.}%
  317. \catcode`\@ = 12
  318. \NameDef{@InputD-legdate.tip}{}
  319. \def\CopyDate #1#2#3#4#5#6{%
  320.     #4 = #1\relax
  321.     #5 = #2\relax
  322.     #6 = #3\relax
  323. \NameDef{@InputD-copydate.tip}{}
  324. \catcode`\@ = 11
  325. \newcount\@TempNextDay
  326. \def\NextDay #1#2#3#4#5#6{%
  327.     \CheckDate{#1}{#2}{#3}%
  328.     \CopyDate{#1}{#2}{#3}{#4}{#5}{#6}%
  329.     \advance #6 by 1
  330.     \NumberOfDaysInMonth{#1}{#2}{\@TempNextDay}%
  331.     \ifnum #6 > \@TempNextDay
  332.         #6 = 1
  333.         \advance #5 by 1
  334.         \ifnum #5 = 13
  335.             #5 = 1
  336.             \advance #4 by 1
  337.         \fi
  338.     \fi
  339. \catcode`\@ = 12
  340. \NameDef{@InputD-nextday.tip}{}
  341. \def\NumberOfDaysInYear #1#2{%
  342.     \if\LeapYearConditional{#1}%
  343.         #2 = 366
  344.     \else
  345.         #2 = 365
  346.     \fi
  347. \NameDef{@InputD-numdyr.tip}{}
  348. \catcode`\@ = 11
  349. \def\ProvideMonth #1#2#3{%
  350.     \CheckLegalMonth{#1}%
  351.     \ifcase #1\relax
  352.     \or
  353.         \def#3{January}\or
  354.         \def#3{February}\or
  355.         \def#3{March}\or
  356.         \def#3{April}\or
  357.         \def#3{May}\or
  358.         \def#3{June}\or
  359.         \def#3{July}\or
  360.         \def#3{August}\or
  361.         \def#3{September}\or
  362.         \def#3{October}\or
  363.         \def#3{November}\or
  364.         \def#3{December}% 
  365.     \fi
  366.     \ifnum #2 = 1
  367.         \def\@TempProvideMonth ##1##2##3##4\@Del{%
  368.             \xdef#3{##1##2##3}%
  369.         }%
  370.         \expandafter\@TempProvideMonth#3\@Del
  371.     \fi
  372. \def\PrintMonth #1#2{%
  373.     {%
  374.         \ProvideMonth{#1}{#2}{\@PrintMonth}%
  375.         \@PrintMonth
  376.     }%
  377. \def\PrintCurrentMonth{% 
  378.     \PrintMonth{\month}{0}%
  379. \catcode`\@ = 12
  380. \NameDef{@InputD-prmonth.tip}{}
  381. \catcode`\@ = 11
  382. \newcount\@YearTemp
  383. \newcount\@YearTop
  384. \newcount\@MonthTemp
  385. \newcount\@MonthTop
  386. \newcount\@TempAD
  387. \def\ArbitraryDayOfWeek #1#2#3#4{%
  388.     \CheckDate{#1}{#2}{#3}%
  389.     #4 = \DayOfWeekOfEarliestDate
  390.     \@YearTop = #1\relax
  391.     \advance\@YearTop by -1
  392.     \DoLoop{\@YearTemp}{\EarliestYearDate}{1}{\@YearTop}{%
  393.         \NumberOfDaysInYear{\@YearTemp}{\@TempAD}%
  394.         \advance #4 by \@TempAD
  395.     }%
  396.     \IModN{#4}{7}{#4}%
  397.     \@MonthTop = #2\relax
  398.     \advance\@MonthTop by -1
  399.     \DoLoop{\@MonthTemp}{1}{1}{\@MonthTop}{%
  400.         \NumberOfDaysInMonth{#1}{\@MonthTemp}{\@TempAD}%
  401.         \advance #4 by \@TempAD
  402.     }%
  403.     \IModN{#4}{7}{#4}%
  404.     \advance #4 by #3\relax
  405.     \advance #4 by -1
  406.     \IModN{#4}{7}{#4}%
  407. \catcode`\@ = 12
  408. \NameDef{@InputD-arbday.tip}{}
  409. \catcode`\@ = 11
  410. \newcount\@TempEarliest
  411. \newcount\EarliestYearDate
  412. \EarliestYearDate = 1583
  413. \newcount\DayOfWeekOfEarliestDate
  414. \DayOfWeekOfEarliestDate = \Saturday
  415. \def\VerifyInitDate{%
  416.     {%
  417.         \ArbitraryDayOfWeek{2000}{1}{1}{\@TempEarliest}%
  418.         \ifnum\@TempEarliest = \Saturday
  419.             \message{\string\VerifyInitDate: initialization
  420.                 correct (initialization year:
  421.                 \the\EarliestYearDate).}%
  422.         \else
  423.             \errmessage{\string\VerifyInitDate: January 1 of 2000
  424.                 is a Saturday! Computation reports it is
  425.                 day \the\@TempEarliest\space. Initialization error.}%
  426.         \fi
  427.     }%
  428. \catcode`\@ = 12
  429. \NameDef{@InputD-earliest.tip}{}
  430. \catcode`\@ = 11
  431. \newcount\@TempPrevDay
  432. \def\PrevDay #1#2#3#4#5#6{%
  433.     \CheckDate{#1}{#2}{#3}%
  434.     \CopyDate{#1}{#2}{#3}{#4}{#5}{#6}%
  435.     \advance #6 by -1
  436.     \ifnum #6 = 0
  437.         \advance #5 by -1
  438.         \ifnum #5 = 0
  439.             #5 = 12
  440.             \advance #4 by -1
  441.         \fi
  442.         \NumberOfDaysInMonth{#4}{#5}{#6}%
  443.     \fi
  444. \catcode`\@ = 12
  445. \NameDef{@InputD-prevday.tip}{}
  446. \catcode`\@ = 11
  447. \def\NextMonth #1#2#3#4{%
  448.     \CheckDate{#1}{#2}{1}%
  449.     #3 = #1\relax
  450.     #4 = #2\relax
  451.     \advance #4 by 1
  452.     \ifnum #4 = 13
  453.         #4 = 1
  454.         \advance #3 by 1
  455.     \fi
  456. \catcode`\@ = 12
  457. \NameDef{@InputD-nextmon.tip}{}
  458. \catcode`\@ = 11
  459. \def\PrevMonth #1#2#3#4{%
  460.     \CheckDate{#1}{#2}{1}%
  461.     #3 = #1\relax
  462.     #4 = #2\relax
  463.     \advance #4 by -1
  464.     \ifnum #4 = 0
  465.         #4 = 12
  466.         \advance #3 by -1
  467.     \fi
  468. \catcode`\@ = 12
  469. \NameDef{@InputD-prevmon.tip}{}
  470. \catcode`\@ = 11
  471. \newcount\@LeadingZCount
  472. \def\LeadingZ #1{%
  473.     \@LeadingZCount = #1\relax
  474.     \ifnum \@LeadingZCount < 10
  475.         0%
  476.     \fi
  477.     \the\@LeadingZCount
  478. \catcode`\@ = 12
  479. \NameDef{@InputD-leadingz.tip}{}
  480. \newcount\Hour
  481. \newcount\Minute
  482. \def\PrintMilTime{% 
  483.     \Hour = \time
  484.     \divide\Hour by 60
  485.     \Minute = \Hour
  486.     \multiply\Minute by 60
  487.     \advance\Minute by -\time
  488.     \Minute = -\Minute
  489.     \LeadingZ{\the\Hour}:\LeadingZ{\the\Minute}% 
  490. \NameDef{@InputD-pmtime.tip}{}
  491. \def\TodayX{% 
  492.     \PrintCurrentMonth~\the\day, \the\year
  493. \newcount\TodayYCount
  494. \def\TodayY{%
  495.     {%
  496.         \ArbitraryDayOfWeek{\year}{\month}{\day}{\TodayYCount}%
  497.         \PrintDayOfWeek{\TodayYCount}{0},
  498.     }%
  499.     \TodayX
  500. \def\TodayZ{%
  501.     \TodayY, \PrintMilTime
  502. \NameDef{@InputD-todayx.tip}{}
  503. \catcode`\@ = 11
  504. \newcount\@InitialDayOfMonth
  505. \newcount\@MCDays
  506. \newcount\@MonthlyCalendarBodyTemp
  507. \def\MonthlyCalendarBody #1#2#3{%
  508.     {%
  509.         \CheckDate{#1}{#2}{1}%
  510.         \ArbitraryDayOfWeek{#1}% 
  511.             {#2}{1}{\@InitialDayOfMonth}%
  512.         \gdef #3{}%
  513.         \DoLoop{\@MonthlyCalendarBodyTemp}% 
  514.             {1}{1}{\@InitialDayOfMonth}%
  515.             {\xdef#3{#3&}}
  516.         \NumberOfDaysInMonth{#1}{#2}{\@MCDays}%
  517.         \DoLoop{\@MonthlyCalendarBodyTemp}{1}{1}{\@MCDays}{%
  518.             \xdef#3{#3\the\@MonthlyCalendarBodyTemp}%
  519.             \ifnum\@InitialDayOfMonth = \Saturday
  520.                 \xdef#3{#3\cr}%
  521.             \else
  522.                 \xdef#3{#3&}%
  523.             \fi
  524.             \advance\@InitialDayOfMonth by 1
  525.             \IModN{\@InitialDayOfMonth}{7}{\@InitialDayOfMonth}%
  526.         }%
  527.     }%
  528.     \xdef#3{#3\crcr}%
  529. \newcount\@MonthlyCalendarCount
  530. \def\MonthlyCalendar #1#2#3{%
  531.     {%
  532.         \MonthlyCalendarBody{#1}{#2}{\TableBody}%
  533.         \vtop{
  534.             \hsize = #3\relax
  535.             \ProvideMonth{#2}{0}{\MonthNameTemp}%
  536.             \@MonthlyCalendarCount = #1\relax
  537.             \centerline{\MyStrut\MonthNameTemp\space
  538.                 \the\@MonthlyCalendarCount}%
  539.             \smallskip
  540.             \hrule
  541.             \smallskip
  542.                                 \tabskip = 0pt
  543.             \halign to \hsize{
  544.                                     % So
  545.                 \hfil##\relax   \tabskip = 0pt plus 1fil&
  546.                 \hfil##&            % Mo
  547.                 \hfil##&            % Tu
  548.                 \hfil##&            % We
  549.                 \hfil##&            % Th
  550.                 \hfil##&            % Fr
  551.                 \hfil##\relax   \tabskip = 0pt
  552.             \cr
  553.                 \omit\hfil So\hfil&
  554.                 \omit\hfil Mo\hfil&
  555.                 \omit\hfil Tu\hfil&
  556.                 \omit\hfil We\hfil&
  557.                 \omit\hfil Th\hfil&
  558.                 \omit\hfil Fr\hfil&
  559.                 \omit\hfil Sa\hfil\cr
  560.                 \TableBody
  561.             }%
  562.             \smallskip
  563.             \hrule
  564.         }%
  565.     }%
  566. \catcode`\@ = 12
  567. \NameDef{@InputD-mocal.tip}{}
  568. \def\ThreeMonthlyCalendars #1#2#3{%
  569.     \hbox{%
  570.         \count0 = #1
  571.         \count1 = #2
  572.         \MonthlyCalendar{\count0}{\count1}{#3}%
  573.         \hskip 10pt
  574.         \NextMonth{\count0}{\count1}{\count0}{\count1}%
  575.         \MonthlyCalendar{\count0}{\count1}{#3}%
  576.         \NextMonth{\count0}{\count1}{\count0}{\count1}%
  577.         \hskip 10pt
  578.         \MonthlyCalendar{\count0}{\count1}{#3}%
  579.     }
  580. \NameDef{@InputD-mocal3.tip}{}
  581. \def\YearlyCalendar #1#2#3{%
  582.     \vbox{%
  583.         \dimen0 = #2\relax
  584.         \ifdim\dimen0 = 0.0pt
  585.             \dimen0 = \hsize
  586.         \fi
  587.         \dimen1 = #3\relax
  588.         \ifdim\dimen1 = 0.0pt
  589.             \dimen1 = \dimen0
  590.             \divide\dimen1 by 3
  591.             \advance\dimen1 by -5pt
  592.         \fi
  593.         \hsize = \dimen0
  594.         \centerline{\Large\bf Year #1}
  595.         \bigskip
  596.         \line{%
  597.             \MonthlyCalendar{#1}{1}{\dimen1}%
  598.             \hfil
  599.             \MonthlyCalendar{#1}{2}{\dimen1}%
  600.             \hfil
  601.             \MonthlyCalendar{#1}{3}{\dimen1}%
  602.         }%
  603.         \bigskip
  604.             \line{%
  605.             \MonthlyCalendar{#1}{4}{\dimen1}%
  606.             \hfil
  607.             \MonthlyCalendar{#1}{5}{\dimen1}%
  608.             \hfil
  609.             \MonthlyCalendar{#1}{6}{\dimen1}%
  610.         }%
  611.         \bigskip
  612.         \line{%
  613.             \MonthlyCalendar{#1}{7}{\dimen1}%
  614.             \hfil
  615.             \MonthlyCalendar{#1}{8}{\dimen1}%
  616.             \hfil
  617.             \MonthlyCalendar{#1}{9}{\dimen1}%
  618.         }%
  619.         \bigskip
  620.         \line{%
  621.             \MonthlyCalendar{#1}{10}{\dimen1}%
  622.             \hfil
  623.             \MonthlyCalendar{#1}{11}{\dimen1}%
  624.             \hfil
  625.             \MonthlyCalendar{#1}{12}{\dimen1}%
  626.         }%
  627.     }
  628. \NameDef{@InputD-yearcal.tip}{}
  629. \catcode`\@ = 11
  630. \newcount\@ComputeMondayOfDateDay
  631. \newcount\@ComputeMondayOfDateDayTwo
  632. \def\ComputeMondayOfDate #1#2#3#4#5#6{%
  633.     #4 = #1\relax   
  634.     #5 = #2\relax   
  635.     #6 = #3\relax   
  636.     \ArbitraryDayOfWeek{#4}{#5}{#6}{\@ComputeMondayOfDateDay}%
  637.     \ifnum\@ComputeMondayOfDateDay = \Sunday
  638.         \@ComputeMondayOfDateDay = 6
  639.     \else
  640.         \advance\@ComputeMondayOfDateDay by -1
  641.     \fi
  642.     \DoLoop{\@ComputeMondayOfDateDayTwo}
  643.         {\@ComputeMondayOfDateDay}{-1}{1}%
  644.         {\PrevDay{#4}{#5}{#6}{#4}{#5}{#6}}%
  645. \catcode`\@ = 12
  646. \NameDef{@InputD-mondofda.tip}{}
  647. \catcode`\@ = 11
  648. \newcount\@NextOrPrevWeekSameDayCount
  649. \def\@NextOrPrevWeekSameDay #1#2#3#4#5#6#7{%
  650.     #4 = #1\relax
  651.     #5 = #2\relax
  652.     #6 = #3\relax
  653.     \DoLoop{\@NextOrPrevWeekSameDayCount}{1}{1}{7}%
  654.         {#7{#4}{#5}{#6}{#4}{#5}{#6}}%
  655. \def\NextWeekSameDay #1#2#3#4#5#6{%
  656.     \@NextOrPrevWeekSameDay
  657.         {#1}{#2}{#3}{#4}{#5}{#6}{\NextDay}%
  658. \def\PrevWeekSameDay #1#2#3#4#5#6{%
  659.     \@NextOrPrevWeekSameDay
  660.         {#1}{#2}{#3}{#4}{#5}{#6}{\PrevDay}%
  661. \catcode`\@ = 12
  662. \NameDef{@InputD-norpweek.tip}{}
  663. \catcode`\@ = 11
  664. \newcount\@WeekOfYearCounter
  665. \newcount\@WeekOfYearYear
  666. \newcount\@WeekOfYearMonth
  667. \newcount\@WeekOfYearDay
  668. \newcount\@WeekOfYearCopy
  669. \def\WeekOfYear #1#2#3#4{%
  670.     \@WeekOfYearCopy = #1\relax
  671.     \ComputeMondayOfDate{#1}{#2}{#3}%
  672.         {\@WeekOfYearYear}{\@WeekOfYearMonth}{\@WeekOfYearDay}%
  673.     \def\@WeekOfYearCounter{#4}%
  674.     \@WeekOfYearCounter = 1
  675.     \@WeekOfYear
  676. \newif\if@YearStop
  677. \def\@WeekOfYear{%
  678.     \@YearStopfalse
  679.     \ifnum\@WeekOfYearCopy > \@WeekOfYearYear
  680.         \@YearStoptrue
  681.     \else
  682.         \ifnum\@WeekOfYearMonth = 1
  683.             \ifnum\@WeekOfYearDay = 1
  684.                 \@YearStoptrue
  685.             \fi
  686.         \fi
  687.     \fi
  688.     \if@YearStop
  689.         \def\@WeekOfYearNext{\relax}%
  690.     \else
  691.         \def\@WeekOfYearNext{\@WeekOfYear}%
  692.         \expandafter\advance\@WeekOfYearCounter by 1
  693.         \PrevWeekSameDay{\@WeekOfYearYear}{\@WeekOfYearMonth}%
  694.             {\@WeekOfYearDay}%
  695.             {\@WeekOfYearYear}{\@WeekOfYearMonth}%
  696.             {\@WeekOfYearDay}%
  697.     \fi
  698.     \@WeekOfYearNext
  699. \catcode`\@ = 12
  700. \NameDef{@InputD-weekofyr.tip}{}
  701. \NameDef{@InputD-alldate.tip}{}
  702. \def\AlwaysBaselineskip{%
  703.     \lineskiplimit = -\maxdimen
  704. \NameDef{@InputD-alwbase.tip}{}
  705. \def\angt #1{% 
  706.     \leavevmode
  707.     \hbox{$\langle$}% 
  708.     {\rm #1}% 
  709.     \hbox{$\rangle$}% 
  710. \NameDef{@InputD-angt.tip}{}
  711. \newif\ifShowX
  712. \ShowXfalse
  713. \def\ShowX #1{%
  714.     \ifShowX
  715.         {%
  716.             \nonstopmode
  717.             \show #1% 
  718.         }%
  719.     \fi
  720. \NameDef{@InputD-showx.tip}{}
  721. \catcode`\@ = 11
  722. \newif\if@TestSubString
  723. \def\SubStringConditional #1#2{%
  724.     TT\fi
  725.     \edef\@MainString{#1}%
  726.     \edef\@SubStringConditionalTemp{{#1}{#2}}%
  727.     \expandafter\@SubStringConditional\@SubStringConditionalTemp
  728. \def\@SubStringConditional #1#2{% 
  729.     \def\@TestSubS ##1#2##2\@Del{% 
  730.         \def\@TestTemp{##1}% 
  731.     }% 
  732.     \ShowX{\@TestSubS}%
  733.     \@TestSubS #1#2\@Del
  734.     \ShowX{\@TestTemp}%
  735.     \ifx\@MainString\@TestTemp
  736.         \@TestSubStringfalse
  737.     \else
  738.         \@TestSubStringtrue
  739.     \fi
  740.     \if@TestSubString
  741. \catcode`\@ = 12
  742. \NameDef{@InputD-testsubs.tip}{}
  743. \catcode`\@ = 11
  744. \def\RecursionMacroEnd #1#2#3{% 
  745.     #1\relax
  746.         \def\@RecursionMacroEndNext{#2}% 
  747.     \else
  748.         \def\@RecursionMacroEndNext{#3}% 
  749.     \fi
  750.     \@RecursionMacroEndNext
  751. \catcode`\@ = 12
  752. \NameDef{@InputD-endrec.tip}{}
  753. \catcode`\@ = 11
  754. \def\ReplaceSubStrings #1#2#3#4{%
  755.     \def\@ReplaceResult{#1}%
  756.     \edef\@ReplaceMain{#2}%
  757.     \edef\@ReplaceSub{#3}%
  758.     \edef\@ReplaceSubRep{#4}%
  759.     \@ReplaceSubStrings
  760. \def\@ReplaceSubStrings{% 
  761.     \RecursionMacroEnd
  762.         {\if\SubStringConditional{\@ReplaceMain}{\@ReplaceSub}}%
  763.         {\@ReplaceSubStringsDo}{\@ReplaceSubStringsDone}%
  764. \def\@ReplaceSubStringsDoX{%
  765.     \def\@ReplaceSubStringsDoA ##1%
  766. \def\@ReplaceSubStringsDo{% 
  767.     \expandafter\@ReplaceSubStringsDoX \@ReplaceSub
  768.                                     ##2\@EndReplaceSubStrings{%
  769.         \edef\@ReplaceMain{##1\@ReplaceSubRep ##2}%
  770.     }%
  771.     \ShowX{\@ReplaceSubStringsDoA}%
  772.     \ShowX{\@ReplaceMain}%
  773.     \expandafter\@ReplaceSubStringsDoA\@ReplaceMain
  774.         \@EndReplaceSubStrings
  775.     \ShowX{\@ReplaceMain}%
  776.     \@ReplaceSubStrings
  777. \def\@ReplaceSubStringsDone{% 
  778.     \expandafter\edef\@ReplaceResult{\@ReplaceMain}%
  779. \catcode`\@ = 12
  780. \NameDef{@InputD-restring.tip}{}
  781. \catcode`\@ = 11
  782. \def\StringsEqualConditional #1#2{% 
  783.     TT\fi
  784.     \edef\@StringsEqualOneConditional{#1}% 
  785.     \edef\@StringsEqualTwoConditional{#2}% 
  786.     \ifx\@StringsEqualOneConditional\@StringsEqualTwoConditional
  787. \def\EmptyStringConditional #1{%
  788.     TT\fi
  789.     \if\StringsEqualConditional{#1}{}%
  790. \def\EmptyStringConditionalISpaces #1{%
  791.     TT\fi
  792.     \ReplaceSubStrings{\@EmptyStringConditionalISpaces}{#1}%
  793.         { }{}%
  794.     \if\EmptyStringConditional
  795.         {\@EmptyStringConditionalISpaces}%
  796. \catcode`\@ = 12
  797. \NameDef{@InputD-compst.tip}{}
  798. \catcode`\@ = 11
  799. \def\@EmptyRefList{}
  800. \def\EmptyListConditional #1{%
  801.     TT\fi
  802.     \ifx#1\@EmptyRefList
  803. \newtoks\@AppendTokOne
  804. \newtoks\@AppendTokTwo
  805. \def\LeftAppendElement #1#2{%
  806.     \edef\@AppendTemp{\noexpand\\{#2}}% 
  807.     \@AppendTokOne = \expandafter{\@AppendTemp}%
  808.     \@AppendTokTwo = \expandafter{#1}%
  809.     \edef#1{\the\@AppendTokOne \the\@AppendTokTwo}%
  810. \def\RightAppendElement #1#2{%
  811.     \edef\@AppendTemp{\noexpand\\{#2}}% 
  812.     \@AppendTokOne = \expandafter{\@AppendTemp}%
  813.     \@AppendTokTwo = \expandafter{#1}%
  814.     \edef#1{\the\@AppendTokTwo \the\@AppendTokOne}%
  815. \def\CarOfList #1#2{%
  816.     \def\@CarTemp \\##1##2\@EndCarList{\def#2{##1}}%
  817.     \expandafter\@CarTemp#1\@EndCarList
  818. \def\CdrOfList #1#2{% 
  819.     \def\@CdrTemp \\##1##2\@EndCdrList{\def#2{##2}}% 
  820.     \expandafter\@CdrTemp#1\@EndCdrList
  821. \def\DropFirstElementOfList #1{% 
  822.     \if\EmptyListConditional{#1}% 
  823.         \errhelp = {\string\DropFirstElementOfList: list is
  824.             empty. No first element to drop.}%
  825.         \errmessage{\string\DropFirstElementOfList: List
  826.             \noexpand#1 is empty.}%
  827.     \else
  828.         \def\@DropFirstElementTemp \\##1##2\@EndCdrList{\def#1{##2}}%
  829.         \expandafter\@DropFirstElementTemp#1\@EndCdrList
  830.     \fi
  831. \def\CarCarOfList #1#2{%
  832.     \let\@CarCarOfListList = #1%
  833.     \DropFirstElementOfList{\@CarCarOfListList}%
  834.     \CarOfList{\@CarCarOfListList}{#2}
  835. \def\ForEveryListElement #1#2{%
  836.     \let\@ForEveryList = #1%
  837.     \let\@ForEveryListElementMacro = #2%
  838.     \@ForEveryListElement
  839. \def\@ForEveryListElement{%
  840.     \if\EmptyListConditional{\@ForEveryList}%
  841.         \let\@ForEveryListElementNext = \relax
  842.     \else
  843.         \CarOfList{\@ForEveryList}{\@ForEveryListElementElement}%
  844.         \@ForEveryListElementMacro{\@ForEveryListElementElement}%
  845.         \DropFirstElementOfList{\@ForEveryList}%
  846.         \let\@ForEveryListElementNext = \@ForEveryListElement
  847.     \fi
  848.     \@ForEveryListElementNext
  849. \newif\if@MemberList
  850. \def\MemberOfListConditional #1#2{%
  851.     TT\fi
  852.     \@MemberListfalse
  853.     {%
  854.         \def\\##1{% 
  855.             \if\StringsEqualConditional{#2}{##1}% 
  856.                 \global\@MemberListtrue
  857.             \fi
  858.         }%
  859.         #1% 
  860.     }%
  861.     \if@MemberList
  862. \def\ReverseList #1#2{%
  863.     \def\@ReverseListOut{}%
  864.     \ForEveryListElement{#1}{\@ReverseList}%
  865.     \let#2 = \@ReverseListOut
  866. \def\@ReverseList #1{% 
  867.     \LeftAppendElement{\@ReverseListOut}{#1}%
  868. \def\LastElementOfList #1#2{%
  869.     \ReverseList{#1}{#1}%
  870.     \CarOfList{#1}{#2}%
  871.     \ReverseList{#1}{#1}%
  872. \def\DropLastElementOfList #1{%
  873.     \ReverseList{#1}{#1}%
  874.     \DropFirstElementOfList{#1}%
  875.     \ReverseList{#1}{#1}%
  876. \def\NumberOfListElements #1#2{% 
  877.     \let\@NumberOfListElementsList = #1%
  878.     \def\@NumberOfListElementsCount{#2}%
  879.     \@NumberOfListElementsCount = 0
  880.     \@NumberOfListElements  
  881. \def\@NumberOfListElements{%
  882.     \if\EmptyListConditional{\@NumberOfListElementsList}%
  883.         \let\@NumberOfListElementsNext = \relax
  884.     \else
  885.         \advance\@NumberOfListElementsCount by 1
  886.         \DropFirstElementOfList{\@NumberOfListElementsList}%
  887.         \let\@NumberOfListElementsNext = \@NumberOfListElements
  888.     \fi
  889.     \@NumberOfListElementsNext
  890. \newcount\@NumberOfListElCCount
  891. \def\NumberOfListElementsNumConditional #1{%
  892.     0=0\fi
  893.     \NumberOfListElements{#1}{\@NumberOfListElCCount}%
  894.     \ifnum\@NumberOfListElCCount
  895. \def\CombineTwoLists #1#2#3{%
  896.     \def\@CombineTwoLists{\def\@CombineTwoListsResult}%
  897.     \expandafter\expandafter\expandafter
  898.     \expandafter\expandafter\expandafter
  899.     \expandafter\@CombineTwoLists
  900.     \expandafter\expandafter\expandafter{\expandafter#1#2}%
  901.     \let #3 = \@CombineTwoListsResult
  902. \catcode`\@ = 12
  903. \NameDef{@InputD-list-mac.tip}{}
  904. \catcode`\@ = 11
  905. \def\IndexLastElement #1#2{%
  906.     \NumberOfListElements{#1}{#2}%
  907.     \advance #2 by -1
  908. \newcount\@ArrayIndexCheckCount
  909. \def\ArrayIndexCheck #1#2{%
  910.     \IndexLastElement{#1}{\@ArrayIndexCheckCount}%
  911.     \ifnum\@ArrayIndexCheckCount = -1
  912.         \errmessage{\string\ArrayIndexCheck: array \string#2
  913.             is empty.}%
  914.     \else
  915.         \CheckRange{#2}{0}{\@ArrayIndexCheckCount}%
  916.             {\string\ArrayIndexCheck: index \number#2 out
  917.                 of range in list \string#1}%
  918.     \fi
  919. \newcount\@AccessArrayElementLimit
  920. \newcount\@AccessArrayElementCount
  921. \def\AccessArrayElement #1#2#3{%
  922.     \ArrayIndexCheck{#1}{#2}%
  923.     \let\@AccessArrayElementList = #1%
  924.     \@AccessArrayElementLimit = #2\relax
  925.     \DoLoop{\@AccessArrayElementCount}% 
  926.         {1}{1}{\@AccessArrayElementLimit}%
  927.         {\DropFirstElementOfList{\@AccessArrayElementList}}%
  928.     \CarOfList{\@AccessArrayElementList}{#3}%
  929. \newcount\@ModifyArrayElementCount
  930. \newcount\@ModifyArrayElementLimit
  931. \def\ModifyArrayElement #1#2#3{%
  932.     \ArrayIndexCheck{#1}{2}%
  933.     \IndexLastElement{#1}{\@ModifyArrayElementLimit}%
  934.     \let\@ModifyArrayList = #1%
  935.     \def\@ModifyArrayRet{}%
  936.     \DoLoop{\@ModifyArrayElementCount}% 
  937.         {0}{1}{\@ModifyArrayElementLimit}%
  938.         {%
  939.             \CarOfList{\@ModifyArrayList}%
  940.                 {\@ModifyArrayElement}%
  941.             \DropFirstElementOfList{\@ModifyArrayList}%
  942.             \ifnum\@ModifyArrayElementCount = #2\relax
  943.                 \RightAppendElement{\@ModifyArrayRet}{#3}%
  944.             \else
  945.                 \RightAppendElement
  946.                     {\@ModifyArrayRet}%
  947.                     {\@ModifyArrayElement}%
  948.             \fi
  949.         }%
  950.     \let #1 = \@ModifyArrayRet
  951. \newcount\@InsertArrayElementCount
  952. \newcount\@InsertArrayElementCountTwo
  953. \def\InsertArrayElement #1#2#3{%
  954.     \ifnum\NumberOfListElementsNumConditional{#1}=0
  955.         \errmessage{\string\InsertArrayElement: empty array}%
  956.     \fi
  957.     \ifnum\NumberOfListElementsNumConditional{#1}=#2
  958.     \else
  959.             \ArrayIndexCheck{#1}{#2}%
  960.     \fi
  961.     \def\@InsertArrayElementListPre{}%
  962.     \ifnum #2>0
  963.         \@InsertArrayElementCount = #2\relax
  964.         \advance\@InsertArrayElementCount by -1
  965.         \ExtractSubArray{#1}{0}{\@InsertArrayElementCount}%
  966.             {\@InsertArrayElementListPre}%
  967.     \fi
  968.     \def\@InsertArrayElementListPost{}%
  969.     \IndexLastElement{#1}{\@InsertArrayElementCount}%
  970.     \ifnum #2 > \@InsertArrayElementCount
  971.     \else
  972.         \ExtractSubArray{#1}{#2}{\@InsertArrayElementCount}%
  973.             {\@InsertArrayElementListPost}%
  974.     \fi
  975.     \RightAppendElement{\@InsertArrayElementListPre}{#3}%
  976.     \CombineTwoLists
  977.         {\@InsertArrayElementListPre}%
  978.         {\@InsertArrayElementListPost}%
  979.         {\@InsertArrayElementListPre}%
  980.     \let #1 = \@InsertArrayElementListPre
  981. \newcount\@DeleteArrayElementCount
  982. \newcount\@DeleteArrayElementLimit
  983. \def\DeleteArrayElement #1#2{%
  984.     \ArrayIndexCheck{#1}{#2}%
  985.     \let\@DeleteArrayElementList = #1%
  986.     \IndexLastElement{#1}{\@DeleteArrayElementLimit}%
  987.     \ifnum\@DeleteArrayElementLimit = -1
  988.         \errmessage{\string\DeleteArrayElement: empty array.}%
  989.     \fi
  990.     \def\@DeleteArrayElementResultList{}%
  991.     \DoLoop{\@DeleteArrayElementCount}% 
  992.         {0}{1}{\@DeleteArrayElementLimit}%
  993.         {%
  994.             \CarOfList{\@DeleteArrayElementList}%
  995.                 {\@DeleteArrayElement}%
  996.             \DropFirstElementOfList{\@DeleteArrayElementList}%
  997.             \ifnum\@DeleteArrayElementCount = #2\relax
  998.             \else
  999.                 \RightAppendElement
  1000.                     {\@DeleteArrayElementResultList}%
  1001.                     {\@DeleteArrayElement}%
  1002.             \fi
  1003.         }%
  1004.     \let #1=\@DeleteArrayElementResultList
  1005. \newcount\@DeleteArrayElementRangeCount
  1006. \newcount\@DeleteArrayElementRangeLimit
  1007. \def\DeleteArrayElementRange #1#2#3{%
  1008.     \ArrayIndexCheck{#1}{#2}%
  1009.     \ArrayIndexCheck{#1}{#3}%
  1010.     \ifnum #2>#3
  1011.         \errmessage{\string\DeleteArrayElementRange:
  1012.             first index larger than second. Makes no
  1013.             sense}%
  1014.     \fi
  1015.     \@DeleteArrayElementRangeLimit = #3\relax
  1016.     \advance\@DeleteArrayElementRangeLimit by -#2%
  1017.     \advance\@DeleteArrayElementRangeLimit by 1
  1018.     \DoLoop{\@DeleteArrayElementRangeCount}{1}{1}%
  1019.         {\@DeleteArrayElementRangeLimit}%
  1020.         {\DropArrayElement{#1}{#2}}%
  1021. \newcount\@ShowArrayCount
  1022. \newcount\@ShowArrayLimit
  1023. \def\ShowArray #1{%
  1024.     \wlog{\string\ShowArray: begin}%
  1025.     \IndexLastElement{#1}{\@ShowArrayLimit}%
  1026.     \ifnum\@ShowArrayLimit = -1
  1027.         \wlog{** empty array **}%
  1028.     \else
  1029.         \DoLoop{\@ShowArrayCount}{0}{1}{\@ShowArrayLimit}{%
  1030.             \AccessArrayElement{#1}{\@ShowArrayCount}%
  1031.                 {\@ShowArrayElement}%
  1032.             \wlog{Index \the\@ShowArrayCount:
  1033.                 "\@ShowArrayElement"}%
  1034.         }%
  1035.     \fi
  1036.     \wlog{\string\ShowArray: end}%
  1037.     \wlog{}%
  1038. \def\@TokenToListDoneMacro{\@TokensToListDone}%
  1039. \def\TokensToTeXList #1#2{%
  1040.     \def#1{}%
  1041.     \def\@TokensToListName{#1}%
  1042.     \@TokensToList #2\@TokensToListDone
  1043. \def\@TokensToList #1{%
  1044.     \def\@TokensToListMacArgOne{#1}%
  1045.     \ifx\@TokensToListMacArgOne\@TokenToListDoneMacro
  1046.         \let\@TokensToListNext = \relax
  1047.     \else
  1048.         \expandafter\RightAppendElement\@TokensToListName{#1}%
  1049.         \let\@TokensToListNext = \@TokensToList
  1050.     \fi     
  1051.     \@TokensToListNext
  1052. \newcount\@ExtractArrayCount
  1053. \newcount\@ExtractArrayLimit
  1054. \newif\if@ExtractCopy
  1055. \def\ExtractSubArray #1#2#3#4{%
  1056.     \ArrayIndexCheck{#1}{#2}%
  1057.     \ArrayIndexCheck{#1}{#3}%
  1058.     \ifnum #3<#2
  1059.         \errmessage{\string\ExtractSubArray: first index >
  1060.             second index, error}%
  1061.     \fi
  1062.     \def\@ExtractSubArrayResult{}%
  1063.     \IndexLastElement{#1}{\@ExtractArrayLimit}%
  1064.     \DoLoop{\@ExtractArrayCount}{0}{1}{\@ExtractArrayLimit}%
  1065.         {%
  1066.             \@ExtractCopytrue
  1067.             \ifnum\@ExtractArrayCount < #2\relax
  1068.                 \@ExtractCopyfalse
  1069.             \fi
  1070.             \ifnum\@ExtractArrayCount > #3\relax
  1071.                 \@ExtractCopyfalse
  1072.             \fi
  1073.             \if@ExtractCopy
  1074.                 \AccessArrayElement
  1075.                     {#1}%
  1076.                     {\@ExtractArrayCount}%
  1077.                     {\@SubArrayElement}%
  1078.                 \RightAppendElement
  1079.                     {\@ExtractSubArrayResult}%
  1080.                     {\@SubArrayElement}%
  1081.             \fi
  1082.         }%
  1083.     \let #4 = \@ExtractSubArrayResult
  1084. \catcode`\@ = 12
  1085. \NameDef{@InputD-arraymac.tip}{}
  1086. \def\ZeroBox #1{%
  1087.     \wd#1 = 0pt
  1088.     \ht#1 = 0pt
  1089.     \dp#1 = 0pt
  1090. \def\ZeroBoxOut #1{%
  1091.     \ZeroBox{#1}%
  1092.     \box#1%
  1093. \NameDef{@InputD-box-zero.tip}{}
  1094. \catcode`\@ = 11
  1095. \newbox\@PrintAtPositionBox
  1096. \def\PrintAtPosition #1#2#3#4{% 
  1097.     \setbox\@PrintAtPositionBox = \hbox{% 
  1098.         \hskip #1\relax
  1099.         \lower #2\hbox{%
  1100.             #3%
  1101.         }%
  1102.     }%
  1103.     #4 = \dp\@PrintAtPositionBox
  1104.     \ZeroBoxOut{\@PrintAtPositionBox}%
  1105. \catcode`\@ = 12
  1106. \def\SetUpPrintAtPosition{% 
  1107.     \nopagenumbers
  1108.     \topskip = 0pt
  1109.     \offinterlineskip
  1110. \NameDef{@InputD-atpos.tip}{}
  1111. \catcode`\@ = 11
  1112. \def\NewEnvironment #1{% 
  1113.     \wlog{\string\NewEnvironment: new environment #1.}% 
  1114.     \NameNewDef{@@B-#1}{% 
  1115.         \bgroup
  1116.         \def\@CurEnvName{#1}%
  1117.         \NameUse{@Begin#1}% 
  1118.     }%
  1119.     \NameNewDef{@@E-#1}{% 
  1120.         \NameUse{@End#1}% 
  1121.         \if\StringsEqualConditional{#1}{\@CurEnvName}% 
  1122.         \else
  1123.             \errmessage{Ending environment: mismatch in
  1124.                 environment names: specified: #1,
  1125.                 expected: \@CurEnvName}%
  1126.         \fi
  1127.         \egroup
  1128.     }%
  1129. \def\B #1{% 
  1130.     \NameUse{@@B-#1}% 
  1131. \def\E #1{% 
  1132.     \NameUse{@@E-#1}% 
  1133. \catcode`\@ = 12
  1134. \NameDef{@InputD-be-env.tip}{}
  1135. \catcode`\@ = 11
  1136. \newbox\@BulletBox
  1137. \setbox\@BulletBox =
  1138.     \hbox{% 
  1139.         \hskip -2.3pt
  1140.         \lower 2.5pt \hbox{$\bullet$}% 
  1141.     }
  1142. \ZeroBox{\@BulletBox}
  1143. \catcode`\@ = 12
  1144. \NameDef{@InputD-box-bul.tip}{}
  1145. \catcode`\@ = 11
  1146. \newbox\@BoxingBox
  1147. \newbox\@BaseLineLeaders
  1148. \catcode`\@ = 12
  1149. \NameDef{@InputD-box-bb.tip}{}
  1150. \newdimen\BoxRuleThickness
  1151. \BoxRuleThickness = 0.4pt
  1152. \NameDef{@InputD-box-thck.tip}{}
  1153. \catcode`\@ = 11
  1154. \newif\ifBulletAndBaseLine
  1155. \BulletAndBaseLinetrue
  1156. \def\RulesOutSide #1#2#3{% 
  1157.     {%
  1158.         \setbox 0 = \hbox{%
  1159.             \ifBulletAndBaseLine
  1160.                 \copy\@BulletBox
  1161.             \fi
  1162.             \hskip -\BoxRuleThickness
  1163.             \vrule width \BoxRuleThickness height #1 depth #2% 
  1164.             \hskip #3%
  1165.             \vrule width \BoxRuleThickness height #1 depth #2%
  1166.             \dimen0 = #3% 
  1167.             \advance \dimen0 by 2\BoxRuleThickness
  1168.             \hskip -\dimen0
  1169.             \dimen2 = #1%
  1170.             \advance\dimen2 by \BoxRuleThickness
  1171.             \vrule width \dimen0 height \dimen2 depth -#1% 
  1172.             \hskip -\dimen0
  1173.             \dimen2 = #2% 
  1174.             \advance\dimen2 by \BoxRuleThickness
  1175.             \vrule width \dimen0 height -#2 depth \dimen2
  1176.         }%
  1177.         \ZeroBoxOut{0}% 
  1178.     }% 
  1179. \def\RulesInSide #1#2#3{% 
  1180.     {%
  1181.         \setbox 0 = \hbox{%
  1182.             \ifBulletAndBaseLine
  1183.                 \copy\@BulletBox
  1184.             \fi
  1185.             \vrule width \BoxRuleThickness height #1 depth #2% 
  1186.             \hskip #3% 
  1187.             \hskip -\BoxRuleThickness
  1188.             \hskip -\BoxRuleThickness
  1189.             \vrule width \BoxRuleThickness height #1 depth #2% 
  1190.             \hskip -#3% 
  1191.             \dimen2 = #1% 
  1192.             \advance\dimen2 by -\BoxRuleThickness
  1193.             \vrule width #3 height #1 depth -\dimen2
  1194.             \hskip -#3% 
  1195.             \dimen2 = #2% 
  1196.             \advance\dimen2 by -\BoxRuleThickness
  1197.             \vrule width #3 height -\dimen2 depth #2% 
  1198.         }%
  1199.         \ZeroBoxOut{0}% 
  1200.     }% 
  1201. \def\RulesOnSide #1#2#3{% 
  1202.     {%
  1203.         \setbox 0 = \hbox{% 
  1204.             \ifBulletAndBaseLine
  1205.                 \copy\@BulletBox
  1206.             \fi
  1207.             \hskip -0.5\BoxRuleThickness
  1208.             \vrule width \BoxRuleThickness height #1 depth #2% 
  1209.             \hskip #3% 
  1210.             \hskip -\BoxRuleThickness
  1211.             \vrule width \BoxRuleThickness height #1 depth #2% 
  1212.             \hskip -#3% 
  1213.             \hskip -\BoxRuleThickness
  1214.             \dimen0 = #3% 
  1215.             \advance\dimen0 by \BoxRuleThickness
  1216.             \dimen2 = #1% 
  1217.             \advance\dimen2 by 0.5\BoxRuleThickness
  1218.             \dimen4 = #1% 
  1219.             \advance\dimen4 by -0.5\BoxRuleThickness
  1220.             \dimen4 = -\dimen4
  1221.             \vrule width \dimen0 height \dimen2 depth \dimen4
  1222.             \hskip -\dimen0
  1223.             \dimen2 = #2% 
  1224.             \advance\dimen2 by -0.5\BoxRuleThickness
  1225.             \dimen2 = -\dimen2
  1226.             \dimen4 = #2% 
  1227.             \advance\dimen4 by 0.5\BoxRuleThickness
  1228.             \vrule width \dimen0 height \dimen2 depth \dimen4
  1229.         }%
  1230.         \ZeroBoxOut{0}% 
  1231.     }% 
  1232. \catcode`\@ = 12
  1233. \NameDef{@InputD-boxing5.tip}{}
  1234. \catcode`\@ = 11
  1235. \def\BoxingE #1{%
  1236.     \hbox{% 
  1237.         \setbox\@BoxingBox = #1%
  1238.         \setbox\@BaseLineLeaders = \hbox to \wd\@BoxingBox{%
  1239.             \xleaders\hbox to 4pt{%
  1240.                 \hskip 1pt
  1241.                 \vrule depth 0.4pt height 0.4pt width 2pt
  1242.                 \hfil
  1243.             }%
  1244.             \hfil
  1245.         }%
  1246.         \ZeroBox{\@BaseLineLeaders}% 
  1247.         \ifBulletAndBaseLine
  1248.             \box\@BaseLineLeaders
  1249.         \fi
  1250.         \RulesOnSide
  1251.             {\ht\@BoxingBox}%
  1252.             {\dp\@BoxingBox}% 
  1253.             {\wd\@BoxingBox}% 
  1254.         \box\@BoxingBox
  1255.     }%
  1256. \catcode`\@ = 12
  1257. \NameDef{@InputD-boxing6.tip}{}
  1258. \catcode`\@ = 11
  1259. \newbox\@VcenterXBox
  1260. \newdimen\@VcenterDimen
  1261. \def\VcenterX{% 
  1262.     \hbox\bgroup
  1263.         \mathsurround = 0pt
  1264.     \futurelet\@VCenterXToken\@VCenterXA
  1265. \def\@VCenterXA{%
  1266.     \ifx\@VCenterXToken\bgroup
  1267.         \let\@VcenterXNext = \@VcenterXOrdinary
  1268.     \else
  1269.         \ifx\@VCenterXToken t%
  1270.             \let\@VcenterXNext = \@VcenterXTo
  1271.         \else
  1272.             \let\@VcenterXNext = \@VcenterXSpread
  1273.         \fi
  1274.     \fi
  1275.     \@VcenterXNext
  1276. \def\@VcenterXOrdinary{%
  1277.     \def\@VcenterCommand{\vcenter}%
  1278.     \afterassignment\@VcenterXB
  1279.     \let\@VcenterDrop =
  1280. \def\@VcenterXTo to{% 
  1281.     \def\@VcenterCommand{to}%
  1282.     \afterassignment\@VcenterXToSpread
  1283.     \@VcenterDimen =
  1284. \def\@VcenterXSpread spread{% 
  1285.     \def\@VcenterCommand{spread}%
  1286.     \afterassignment\@VcenterXToSpread
  1287.     \@VcenterDimen =
  1288. \def\@VcenterXToSpread{%
  1289.     \edef\@VcenterCommand{% 
  1290.         \vcenter\@VcenterCommand \the\@VcenterDimen
  1291.     }%
  1292.     \afterassignment\@VcenterXB
  1293.     \let\@VcenterDrop =
  1294. \def\@VcenterXB{%
  1295.     \setbox\@VcenterXBox = \hbox\bgroup
  1296.         $%
  1297.         \@VcenterCommand\bgroup
  1298.     \aftergroup\@VcenterXC
  1299. \def\@VcenterXC{%
  1300.     $%
  1301.     \egroup
  1302.     \box\@VcenterXBox
  1303.     \egroup
  1304. \catcode`\@ = 12
  1305. \NameDef{@InputD-vcentx.tip}{}
  1306. \catcode`\@ = 11
  1307. \newdimen\@BoxRDimen
  1308. \newbox\@BoxRBox
  1309. \newcount\@BoxRNumber
  1310. \def\HboxR{%
  1311.     \hbox\bgroup
  1312.     \def\@WhichBox{\hbox}%
  1313.     \def\@WhichBoxDimen{}%
  1314.     \@BoxRaa
  1315. \def\VboxR{%
  1316.     \vbox\bgroup
  1317.     \def\@WhichBox{\vbox}%
  1318.     \def\@WhichBoxDimen{}%
  1319.     \@BoxRaa
  1320. \def\VtopR{%
  1321.     \vtop\bgroup
  1322.     \def\@WhichBox{\vtop}%
  1323.     \def\@WhichBoxDimen{}%
  1324.     \@BoxRaa
  1325. \def\VcenterXR{%
  1326.     \hbox\bgroup
  1327.     \def\@WhichBox{\VcenterX}%
  1328.     \def\@WhichBoxDimen{}%
  1329.     \@BoxRaa
  1330. \def\BoxR{%
  1331.     \hbox\bgroup
  1332.     \def\@WhichBox{\hbox}%
  1333.     \def\@WhichBoxDimen{}%
  1334.     \afterassignment\@BoxRB
  1335.     \@BoxRNumber =
  1336. \def\@BoxRB{%
  1337.     \HboxR{\box\@BoxRNumber}% 
  1338.     \egroup
  1339. \def\CopyR{%
  1340.     \hbox\bgroup
  1341.     \def\@WhichBox{\hbox}%
  1342.     \def\@WhichBoxDimen{}%
  1343.     \afterassignment\@CopyRbb
  1344.     \@BoxRNumber =
  1345. \def\@CopyRbb{%
  1346.     \HboxR{\copy\@BoxRNumber}% 
  1347.     \egroup
  1348. \def\@BoxRaa{% 
  1349.     \futurelet\@BoxRSymbol\@BoxRA
  1350. \def\@BoxRA{%
  1351.     \ifx\@BoxRSymbol\bgroup
  1352.         \let\@BoxitNext = \@BoxRb
  1353.     \else
  1354.         \if\@BoxRSymbol t% 
  1355.             \let\@BoxitNext = \@BoxRbTo
  1356.         \else
  1357.             \let\@BoxitNext = \@BoxRbSpread
  1358.         \fi
  1359.     \fi
  1360.     \@BoxitNext
  1361. \def\@BoxRb{%
  1362.     \afterassignment\@BoxRbTwo
  1363.     \let\@BoxDrop =
  1364. \def\@BoxRbTwo{% 
  1365.     \setbox\@BoxRBox = \expandafter\@WhichBox\@WhichBoxDimen\bgroup
  1366.     \aftergroup\@BoxRbThree
  1367. \def\@BoxRbThree{% 
  1368.     \BoxingE{\box\@BoxRBox}% 
  1369.     \egroup
  1370. \def\@BoxRbTo to{%
  1371.     \def\@WhichBoxDimen{to}% 
  1372.     \afterassignment\@BoxRbMoreSpreadTo
  1373.     \@BoxRDimen =
  1374. \def\@BoxRbSpread spread{%
  1375.     \def\@WhichBoxDimen{spread}%
  1376.     \afterassignment\@BoxRbMoreSpreadTo
  1377.     \@BoxRDimen =
  1378. \def\@BoxRbMoreSpreadTo{%
  1379.     \edef\@WhichBoxDimen{\@WhichBoxDimen \the\@BoxRDimen}% 
  1380.     \afterassignment\@BoxRbTwo
  1381.     \let\@BoxDrop =
  1382. \catcode`\@ = 12
  1383. \NameDef{@InputD-boxing7.tip}{}
  1384. \def\BoxLarger #1#2{% 
  1385.     \vbox{% 
  1386.         \vskip #2
  1387.         \hbox{% 
  1388.             \hskip #2%
  1389.             \hbox{#1}% 
  1390.             \hskip #2%
  1391.         }%
  1392.         \vskip #2
  1393.     }% 
  1394. \NameDef{@InputD-box-larg.tip}{}
  1395. \def\EmptyBox #1#2#3{% 
  1396.     \hbox{% 
  1397.         \setbox 0 = \hbox{}% 
  1398.         \ht0 = #1% 
  1399.         \dp0 = #2% 
  1400.         \wd0 = #3% 
  1401.         \box 0% 
  1402.     }% 
  1403. \NameDef{@InputD-emptybox.tip}{}
  1404. \catcode`\@ = 11
  1405. \newbox\@EmptyRuledBox
  1406. \def\EmptyRuledBox #1#2#3{%
  1407.     \setbox\@EmptyRuledBox = \hbox{}%
  1408.     \ht\@EmptyRuledBox = #1\relax
  1409.     \dp\@EmptyRuledBox = #2\relax
  1410.     \wd\@EmptyRuledBox = #3\relax
  1411.     \HboxR{\box\@EmptyRuledBox}%
  1412. \catcode`\@ = 12
  1413. \NameDef{@InputD-emprubox.tip}{}
  1414. \def\EliminateRuledBoxes{%
  1415.     \let\HboxR = \hbox
  1416.     \let\VboxR = \vbox
  1417.     \let\VtopR = \vtop
  1418.     \let\VcenterXR = \VcenterX
  1419.     \let\BoxR = \box
  1420.     \let\CopyR = \copy
  1421. \NameDef{@InputD-boxrelim.tip}{}
  1422. \def\LineR{\HboxR to \hsize}
  1423. \def\LeftlineR   #1{\LineR{#1\hss}}
  1424. \def\RightlineR  #1{\LineR{\hss#1}}
  1425. \def\CenterlineR #1{\LineR{\hss#1\hss}}
  1426. \NameDef{@InputD-linesr.tip}{}
  1427. \NameDef{@InputD-box-mac.tip}{}
  1428. \catcode`\@ = 11
  1429. \newdimen\@BigLetDown
  1430. \newdimen\@BigLetDimen
  1431. \newcount\@BigLetCount
  1432. \newbox\@BigLetBox
  1433. \newdimen\BigLetSep
  1434. \BigLetSep = 2pt
  1435. \newdimen\BigLetH
  1436. \BigLetH = 2pt
  1437. \def\BigLetPar #1{%
  1438.     \par
  1439.     \setbox\@BigLetBox = \hbox{#1\hskip\BigLetSep}%
  1440.     \setbox\@BigLetBox = \vtop{%
  1441.         \dimen0 = \baselineskip
  1442.         \offinterlineskip
  1443.         \hbox{}
  1444.         \vskip -0.7\dimen0
  1445.         \box\@BigLetBox
  1446.         \vbox to \BigLetH{}
  1447.     }%
  1448.     \@BigLetDimen = \dp\@BigLetBox
  1449.     \advance\@BigLetDimen by 0.7\baselineskip
  1450.     \advance\@BigLetDimen by 1.0\baselineskip
  1451.     \divide\@BigLetDimen by \baselineskip
  1452.     \@BigLetCount = \@BigLetDimen
  1453.     \dp\@BigLetBox = 0pt
  1454.     \hangafter = -\@BigLetCount
  1455.     \hangindent = \wd\@BigLetBox
  1456.     \noindent
  1457.     \hskip -\hangindent
  1458.     \box \@BigLetBox
  1459.     \ignorespaces
  1460. \catcode`\@ = 12
  1461. \NameDef{@InputD-bletpar.tip}{}
  1462. \def\BoxingA #1{% 
  1463.     \vbox{%
  1464.         \hrule
  1465.         \hbox{%
  1466.             \vrule
  1467.             #1% 
  1468.             \vrule
  1469.         }%
  1470.         \hrule
  1471.     }%
  1472. \NameDef{@InputD-boxing1.tip}{}
  1473. \def\BoxingB #1{%
  1474.     \vbox{%
  1475.         \hrule height \BoxRuleThickness
  1476.         \hbox{% 
  1477.             \vrule width \BoxRuleThickness
  1478.             #1%
  1479.             \vrule width \BoxRuleThickness
  1480.         }%
  1481.         \hrule height \BoxRuleThickness
  1482.     }%
  1483. \NameDef{@InputD-boxing2.tip}{}
  1484. \catcode`\@ = 11
  1485. \def\BoxingC #1{%
  1486.     \vbox{%
  1487.         \hrule height \BoxRuleThickness
  1488.         \hbox{%
  1489.             \vrule width \BoxRuleThickness
  1490.             \copy\@BulletBox
  1491.             #1% 
  1492.             \vrule width \BoxRuleThickness
  1493.         }%
  1494.         \hrule height \BoxRuleThickness
  1495.     }%
  1496. \catcode`\@ = 12
  1497. \NameDef{@InputD-boxing3.tip}{}
  1498. \catcode`\@ = 11
  1499. \def\BoxingD #1{%
  1500.     \vbox{%
  1501.         \setbox\@BoxingBox = #1%
  1502.         \setbox\@BaseLineLeaders = \hbox to \wd\@BoxingBox{%
  1503.             \xleaders\hbox to 4pt{%
  1504.                 \hskip 1pt
  1505.                 \vrule depth 0.4pt height 0.4pt width 2pt
  1506.                 \hfil
  1507.                 }%
  1508.             \hfil
  1509.         }%
  1510.         \ZeroBox{\@BaseLineLeaders}% 
  1511.         \hrule height \BoxRuleThickness
  1512.         \hbox{%
  1513.             \vrule width \BoxRuleThickness
  1514.             \copy\@BulletBox
  1515.             \box\@BaseLineLeaders
  1516.             \box\@BoxingBox
  1517.             \vrule width \BoxRuleThickness
  1518.         }%
  1519.         \hrule height \BoxRuleThickness
  1520.     }%
  1521. \catcode`\@ = 12
  1522. \NameDef{@InputD-boxing4.tip}{}
  1523. \catcode`\@ = 11
  1524. \def\newcountOF{\alloc@0\count\countdef\insc@unt}
  1525. \def\newdimenOF{\alloc@1\dimen\dimendef\insc@unt}
  1526. \def\newskipOF{\alloc@2\skip\skipdef\insc@unt}
  1527. \def\newmuskipOF{\alloc@3\muskip\muskipdef\@cclvi}
  1528. \def\newboxOF{\alloc@4\box\chardef\insc@unt}
  1529. \def\newhelpOF#1#2{\newtoksOF#1#1\expandafter{\csname#2\endcsname}}
  1530. \def\newtoksOF{\alloc@5\toks\toksdef\@cclvi}
  1531. \def\newreadOF{\alloc@6\read\chardef\sixt@@n}
  1532. \def\newwriteOF{\alloc@7\write\chardef\sixt@@n}
  1533. \def\newfamOF{\alloc@8\fam\chardef\sixt@@n}
  1534. \def\newifOF#1{\count@\escapechar \escapechar\m@ne
  1535.   \expandafter\expandafter\expandafter
  1536.    \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%
  1537.   \expandafter\expandafter\expandafter
  1538.    \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%
  1539.   \@if#1{false}\escapechar\count@} % the condition starts out false
  1540. \def\newlanguageOF{\alloc@9\language\chardef\@cclvi}
  1541. \catcode`\@ = 12
  1542. \NameDef{@InputD-newoutfr.tip}{}
  1543. \edef\FourSpaces{\space\space\space\space}
  1544. \edef\EightSpaces{\FourSpaces\FourSpaces}
  1545. \NameDef{@InputD-mspaces.tip}{}
  1546. \catcode`\@ = 11
  1547. \newcount\@BoxRQStart
  1548. \newcount\@BoxRQEnd
  1549. \newcount\@BoxRQLength
  1550. \newcount\@BoxRQCount
  1551. \newcount\@BoxRQLast
  1552. \newcount\@BoxRQFirst
  1553. \def\@LoadBRQCounters #1{%
  1554.     \if\NameDefinedConditional{@BoxRQ-Start-#1}%
  1555.         \@BoxRQStart = \NameUse{@BoxRQ-Start-#1}%
  1556.         \@BoxRQEnd   = \NameUse{@BoxRQ-End-#1}%
  1557.         \@BoxRQLength= \NameUse{@BoxRQ-Length-#1}%
  1558.         \@BoxRQCount = \NameUse{@BoxRQ-Count-#1}%
  1559.         \@BoxRQLast  = \NameUse{@BoxRQ-Last-#1}%
  1560.         \@BoxRQFirst = \NameUse{@BoxRQ-First-#1}%
  1561.     \else
  1562.         \errmessage{\string\@LoadBRQCounters: no queue "#1".}%
  1563.     \fi
  1564. \def\@RestoreBRQCounters #1{%
  1565.     \NameXdef{@BoxRQ-Start-#1}{\the\@BoxRQStart}%
  1566.     \NameXdef{@BoxRQ-End-#1}{\the\@BoxRQEnd}%
  1567.     \NameXdef{@BoxRQ-Length-#1}{\the\@BoxRQLength}%
  1568.     \NameXdef{@BoxRQ-Count-#1}{\the\@BoxRQCount}%
  1569.     \NameXdef{@BoxRQ-Last-#1}{\the\@BoxRQLast}%
  1570.     \NameXdef{@BoxRQ-First-#1}{\the\@BoxRQFirst}%
  1571. \newcount\@BoxRQTempA           \newcount\@BoxRQTempB
  1572. \def\SetUpBoxRegisterQueue #1#2{% 
  1573.     \@BoxRQStart = \count14
  1574.     \advance\@BoxRQStart by 1
  1575.     \@BoxRQTempA = \@BoxRQStart
  1576.     \DoLoop{\@BoxRQTempB}{1}{1}{#2}% 
  1577.         {\newboxOF\@WhoCaresBoxRegisterIndexA
  1578.         \advance\@BoxRQTempA by 1 }
  1579.     \advance\@BoxRQTempA by -1
  1580.     \@BoxRQEnd = \@BoxRQTempA
  1581.     \wlog{\string\SetUpBoxRegisterQueue: queue "#1."}%
  1582.     \wlog{\EightSpaces Box registers
  1583.         \the\@BoxRQStart\space through
  1584.         \the\@BoxRQEnd\space allocated.}%
  1585.     \wlog{\EightSpaces (#2 registers).}%
  1586.     \@BoxRQCount = 0
  1587.     \@BoxRQLength = #2
  1588.     \@RestoreBRQCounters{#1}%
  1589. \def\AddBoxToQueue #1#2{% 
  1590.     \@LoadBRQCounters{#1}%
  1591.     \wlog{\string\AddBoxToQueue: length: \the\@BoxRQLength,
  1592.         count: \the\@BoxRQCount}%
  1593.     \ifnum\@BoxRQCount  = \@BoxRQLength
  1594.         \errmessage{\string\AddBoxToQueue: Queue "#1" is full.}% 
  1595.     \else
  1596.         \ifnum\@BoxRQCount = 0
  1597.             \@BoxRQLast  = \@BoxRQStart
  1598.             \@BoxRQFirst = \@BoxRQStart
  1599.         \fi
  1600.         \global\setbox\@BoxRQLast = #2%
  1601.         \advance\@BoxRQLast by 1
  1602.         \ifnum\@BoxRQLast > \@BoxRQEnd
  1603.             \@BoxRQLast = \@BoxRQStart
  1604.         \fi
  1605.         \advance\@BoxRQCount by 1
  1606.         \@RestoreBRQCounters{#1}%
  1607.     \fi
  1608. \def\CopyFirstElementFromQueue #1#2{% 
  1609.     \@LoadBRQCounters{#1}%
  1610.     \ifnum\@BoxRQCount = 0
  1611.         \errmessage{\string\CopyFirstElementFromQueue: empty "#1"}%
  1612.     \else
  1613.         \setbox #2 = \copy\@BoxRQFirst
  1614.     \fi
  1615. \def\DropFirstBoxOfQueue #1{% 
  1616.     \@LoadBRQCounters{#1}%
  1617.     \ifnum\@BoxRQCount = 0
  1618.         \errmessage{\string\DropFirstBoxOfQueue: "#1" is empty.}% 
  1619.     \else
  1620.         \advance\@BoxRQCount by -1
  1621.         \ifnum\@BoxRQCount = 0
  1622.         \else
  1623.             \advance\@BoxRQFirst by 1
  1624.             \ifnum\@BoxRQFirst > \@BoxRQEnd
  1625.                 \@BoxRQFirst = \@BoxRQStart
  1626.             \fi
  1627.         \fi
  1628.     \fi
  1629.     \@RestoreBRQCounters{#1}%
  1630. \def\EmptyBoxRegisterQueueConditional #1{% 
  1631.     TT\fi
  1632.     \@LoadBRQCounters{#1}%
  1633.     \ifnum\@BoxRQCount = 0
  1634. \catcode`\@ = 12
  1635. \NameDef{@InputD-boxrqu.tip}{}
  1636. \def\CenterlineP #1{%
  1637.     \centerline{#1\unskip .}
  1638. \NameDef{@InputD-centerlp.tip}{}
  1639. \def\BeginCenter{%
  1640.     \par
  1641.     \begingroup
  1642.     \rightskip = 1in plus 4em
  1643.     \leftskip = \rightskip
  1644.     \spaceskip = .3333em
  1645.     \xspaceskip = .5em
  1646.     \parfillskip = 0pt
  1647.     \noindent
  1648. \def\EndCenter{%
  1649.     \par
  1650.     \endgroup
  1651. \NameDef{@InputD-centerng.tip}{}
  1652. \def\CenterOrParagraph #1{% 
  1653.     {% 
  1654.         \par
  1655.         \setbox 0 = \hbox{#1}%
  1656.         \ifdim\wd0 > \hsize
  1657.             \noindent #1\par
  1658.         \else
  1659.             \centerline{\box0}%
  1660.         \fi
  1661.     }% 
  1662. \NameDef{@InputD-centpar.tip}{}
  1663. \def\hboxE #1{%
  1664.     {% 
  1665.         \setbox0 = \hbox{#1}% 
  1666.         \setbox1 = \hbox{}% 
  1667.         \wd1 = \wd0
  1668.         \ht1 = \ht0
  1669.         \dp1 = \dp0
  1670.         \HboxR{\box 1}%
  1671.     }% 
  1672. \NameDef{@InputD-charbo.tip}{}
  1673. \catcode`\@ = 11
  1674. \newdimen\@AdvanceBoxD
  1675. \def\AdvanceBoxDimension #1#2{% 
  1676.     \@AdvanceBoxD = #1\relax
  1677.     \advance\@AdvanceBoxD by #2\relax
  1678.     #1 = \@AdvanceBoxD
  1679. \catcode`\@ = 12
  1680. \NameDef{@InputD-chboxd.tip}{}
  1681. \catcode`\@ = 11
  1682. \def\ClearBoxReg #1{% 
  1683.     \setbox #1 = \box\voidb@x
  1684. \catcode`\@ = 12
  1685. \NameDef{@InputD-clearb.tip}{}
  1686. \def\InitialCollectInfo{% 
  1687.     \gdef\Collect{}% 
  1688. \InitialCollectInfo
  1689. \long\def\AddInfo #1{% 
  1690.     \xdef\Collect{\Collect #1}% 
  1691. \NameDef{@InputD-collect.tip}{}
  1692. \newtoks\CollectTokens
  1693. \CollectTokens = {}
  1694. \def\AddInfo #1{% 
  1695.     \expandafter\expandafter\expandafter
  1696.             \CollectTokens\expandafter{% 
  1697.         \the\CollectTokens #1}
  1698. \NameDef{@InputD-coltok.tip}{}
  1699. \catcode`\@ = 11
  1700. \def\MakeOther #1{\catcode `#1 = 12 }
  1701. \def\MakeActive #1{\catcode `#1 = \active\relax}
  1702. \def\MakeEolActive{\MakeActive{\^^M}}
  1703. \def\MakeTabActive{\MakeActive{\^^I}}
  1704. \def\MkOthersNoCB{%
  1705.     \MakeOther{\ }%
  1706.     \MakeOther{\\}%
  1707.     \MakeOther{\$}%
  1708.     \MakeOther{\&}%
  1709.     \MakeOther{\#}%
  1710.     \MakeOther{\^}\MakeOther{\^^K}%
  1711.     \MakeOther{\_}\MakeOther{\^^A}%
  1712.     \MakeOther{\%}%
  1713.     \MakeOther{\~}%
  1714. \def\MkOthers{%
  1715.     \MakeOther{\{}%
  1716.     \MakeOther{\}}%
  1717.     \MkOthersNoCB
  1718. {\catcode`\^^I = 11
  1719. \gdef\@TabAsLiteral{^^I}% 
  1720. \catcode`\[ = 1
  1721. \catcode`\] = 2
  1722.     \catcode`\{ = 12
  1723.     \catcode`\} = 12
  1724.     \gdef\LeftBraceText[{]
  1725.     \gdef\RightBraceText[}]
  1726. \catcode`\[ = 12
  1727. \catcode`\] = 12
  1728. \def\AcuteAccentText{\'{}}
  1729. \def\AcuteAccentTt{{\tt\AcuteAccentText}}
  1730. \def\AmpersandText{\char`\&}
  1731. \def\AmpersandTt{{\tt\AmpersandText}}
  1732. \def\ApostropheText{'{}}
  1733. \def\ApostropheTt{{\tt\ApostropheText}}
  1734. \def\AtSignText{@}
  1735. \def\AtSignTt{{\tt\AtSignText}}
  1736.     \catcode`| = 0
  1737.     |catcode`\\ = 12
  1738.     |gdef|Backslash{\}
  1739. \def\BackslashTt{{\tt\char`\\}}
  1740. \def\CaretText{\char`\^{}}
  1741. \def\CaretTt{{\tt\CaretText}}
  1742. \def\DollarSignText{\$}
  1743. \def\DollarSignTt{{\tt\DollarSignText}}
  1744.     \catcode`\# = 12
  1745.     \gdef\PoundSign{#}
  1746. \def\pounds{{\it\char'44 }}
  1747. \def\DoubleQuoteTt{{\tt"}}
  1748. \def\EmDashText{{}---{}}
  1749. \def\EmDashTt{{\tt\EmDashText}}
  1750. \def\EnDashText{{}--{}}
  1751. \def\EnDashTt{{\tt\EnDashText}}
  1752. \def\ExclamationPointText{!}
  1753. \def\ExclamationPointTt{{\tt\ExclamationPointText}}
  1754. \def\GreaterThanSign{>}
  1755. \def\GreaterThanSignTt{{\tt\GreaterThanSign}}
  1756. \def\HyphenText{-}
  1757. \def\HyphenTt{{\tt\HyphenText}}
  1758. \def\OpenExclamationText{>}
  1759. \def\OpenExclamationTt{{\tt\OpenExclamationText}}
  1760. \def\LeftBraceTt{{\tt\LeftBraceText}}
  1761. \def\LeftBracketText{[}
  1762. \def\LeftBracketTt{{\tt\LeftBracketText}}
  1763. \def\LeftParenthesisText{(}
  1764. \def\LeftParenthesisTt{{\tt\LeftParenthesisText}}
  1765. \def\LeftQuoteText{`{}}
  1766. \def\LeftQuoteTt{{\tt\LeftQuoteText}}
  1767. \def\LessThanSign{<}
  1768. \def\LessThanSignTt{{\tt\LessThanSign}}
  1769. \def\MinusSignText{-}
  1770. \def\MinusSignTt{{\tt\MinusSignText}}
  1771. \def\OpenQuestionText{<}
  1772. \def\OpenQuestionTt{{\tt\OpenQuestionText}}
  1773. \def\PlusSignText{+}
  1774. \def\PlusSignTt{{\tt\PlusSignText}}
  1775. \def\PercentSignText{\%}
  1776. \def\PercentSignTt{{\tt\PercentSignText}}
  1777.     \catcode`\% = 12
  1778.     \gdef\PercentSignPure{%}
  1779. \def\PeriodText{.}
  1780. \def\PeriodTt{{\tt\PeriodText}}
  1781. \def\PoundSignText{\#}
  1782. \def\PoundSignTt{{\tt\PoundSignText}}
  1783. \def\QuestionMarkText{?}
  1784. \def\QuestionMarkTt{{\tt\QuestionMarkText}}
  1785. \def\RightBraceTt{{\tt\RightBraceText}}
  1786. \def\RightBracketText{]}
  1787. \def\RightBracketTt{{\tt\RightBracketText}}
  1788. \def\RightQuoteText{'{}}
  1789. \def\RightQuoteTt{{\tt\RightQuoteText}}
  1790. \def\RightParenthesisText{)}
  1791. \def\RightParenthesisTt{{\tt\RightParenthesisText}}
  1792. \def\SpaceText{ }
  1793. \def\VisibleSpaceTt{{\tt\char"20}}
  1794. \def\TildeText{\char`\~{}}
  1795. \def\TildeTt{{\tt\TildeText}}
  1796. \def\UnderscoreText{\char`\_}
  1797. \def\UnderscoreTt{{\tt\UnderscoreText}}
  1798. \def\VerbControlSpace{\ }
  1799. \catcode`\@ = 12
  1800. \NameDef{@InputD-verb-bas.tip}{}
  1801. \catcode`\@ = 11
  1802. \newread\@FileExistsS
  1803. \newif\if@FileExistsAnswer
  1804. \def\FileExistsConditional #1{% 
  1805.     TT\fi
  1806.     \openin\@FileExistsS = #1
  1807.     \ifeof\@FileExistsS
  1808.         \@FileExistsAnswerfalse
  1809.     \else
  1810.         \closein\@FileExistsS
  1811.         \@FileExistsAnswertrue
  1812.     \fi
  1813.     \if@FileExistsAnswer
  1814. \catcode`\@ = 12
  1815. \NameDef{@InputD-fexist.tip}{}
  1816. \catcode`\@ = 11
  1817. \newcount\@CompareFilesResult
  1818. \newread\@ReadCompareOne
  1819. \newread\@ReadCompareTwo
  1820. \def\CompareFilesConditional #1#2{% 
  1821.     TT\fi
  1822.     \if\FileExistsConditional{#1}%
  1823.     \else
  1824.         \errmessage{\string\CompareFilesConditional: first file "#1"
  1825.             does not exist.}% 
  1826.     \fi
  1827.     \if\FileExistsConditional{#2}%
  1828.     \else
  1829.         \errmessage{\string\CompareFilesConditional: second file "#2"
  1830.             does not exist.}% 
  1831.     \fi
  1832.     \global\@CompareFilesResult = 0
  1833.     \begingroup
  1834.     \MkOthers
  1835.     \openin\@ReadCompareOne = #1
  1836.     \openin\@ReadCompareTwo = #2
  1837.     \@CompareFiles
  1838. \def\@CompareFiles{% 
  1839.     \read\@ReadCompareOne to \@CompareOneString
  1840.     \read\@ReadCompareTwo to \@CompareTwoString
  1841.     \ifeof\@ReadCompareOne
  1842.         \ifeof\@ReadCompareOne
  1843.             \global\@CompareFilesResult = 1
  1844.         \else
  1845.             \global\@CompareFilesResult = 2
  1846.         \fi
  1847.     \else
  1848.         \ifeof\@ReadCompareOne
  1849.             \global\@CompareFilesResult = 2
  1850.         \else
  1851.             \ifx\@CompareOneString\@CompareTwoString
  1852.             \else
  1853.                 \global\@CompareFilesResult = 2
  1854.             \fi
  1855.         \fi
  1856.     \fi
  1857.     \RecursionMacroEnd
  1858.         {\ifnum \@CompareFilesResult = 0\relax}% 
  1859.         {\@CompareFiles}{\@EndCompareFiles}% 
  1860. \def\@EndCompareFiles{% 
  1861.     \endgroup
  1862.     \closein\@ReadCompareOne
  1863.     \closein\@ReadCompareTwo
  1864.     \ifnum\@CompareFilesResult = 1
  1865. \catcode`\@ = 12
  1866. \NameDef{@InputD-comfiles.tip}{}
  1867. \catcode`\@ = 11
  1868. \newwrite\GenericOStream
  1869. \newif\if@GenericOStreamOpen
  1870. \@GenericOStreamOpenfalse
  1871. \def\OpenGenericOStream #1{%
  1872.     \if@GenericOStreamOpen
  1873.         \errmessage{\string\OpenGenericOStream: generic
  1874.             output stream currently open.}%
  1875.     \else
  1876.         \global\@GenericOStreamOpentrue
  1877.         \immediate\openout\GenericOStream = #1%
  1878.     \fi 
  1879. \def\CloseGenericOStream{%
  1880.     \if@GenericOStreamOpen
  1881.         \global\@GenericOStreamOpenfalse
  1882.         \immediate\closeout\GenericOStream
  1883.     \else
  1884.         \errhelp{Stream not in use.}%
  1885.         \errmessage{\string\CloseGenericOStream:
  1886.             stream is NOT open for output.}%
  1887.     \fi 
  1888. \catcode`\@ = 12
  1889. \NameDef{@InputD-genostr.tip}{}
  1890. \catcode`\@ = 11
  1891. \newread\@StringsEqualConditionalCatInput
  1892. \def\StringsEqualConditionalCat #1#2{% 
  1893.     TT\fi
  1894.     \edef\@StringsEqualOneConditionalCat{#1}% 
  1895.     \edef\@StringsEqualTwoConditionalCat{#2}% 
  1896.     \OpenGenericOStream{compst.tmp}%
  1897.     \immediate\write\GenericOStream{%
  1898.         \@StringsEqualOneConditionalCat{#1}%
  1899.     }%
  1900.     \immediate\write\GenericOStream{%
  1901.         \@StringsEqualTwoConditionalCat{#1}%
  1902.     }%
  1903.     \CloseGenericOStream
  1904.     \openin\@StringsEqualConditionalCatInput = compst.tmp
  1905.     \read\@StringsEqualConditionalCatInput to
  1906.         \@StringsEqualOneConditionalCatR
  1907.     \read\@StringsEqualConditionalCatInput to
  1908.         \@StringsEqualTwoConditionalCatR
  1909.     \closein\@StringsEqualConditionalCatInput
  1910.     \ifx
  1911.         \@StringsEqualOneConditionalCatR
  1912.         \@StringsEqualTwoConditionalCatR
  1913. \catcode`\@ = 12
  1914. \NameDef{@InputD-compstca.tip}{}
  1915. \catcode`\@ = 11
  1916. \newif\if@LetterConditional
  1917. \newcount\@LetterConditionalCounter
  1918. \def\@LetterConditional #1#2;{%
  1919.     \@LetterConditionalCounter = `#1\relax
  1920. \def\LetterConditional #1{%
  1921.     TT\fi
  1922.     \@LetterConditionalfalse
  1923.     \edef\@LetterConditionalString{#1}%
  1924.     \expandafter\@LetterConditional\@LetterConditionalString ;
  1925.     \if\InRangeConditional{\@LetterConditionalCounter}{`\a}{`\z}%
  1926.         \@LetterConditionaltrue
  1927.     \fi
  1928.     \if\InRangeConditional{\@LetterConditionalCounter}{`\A}{`\Z}%
  1929.         \@LetterConditionaltrue
  1930.     \fi
  1931.     \if@LetterConditional       
  1932. \catcode`\@ = 12
  1933. \NameDef{@InputD-condltr.tip}{}
  1934. \catcode`\@ = 11
  1935. \def\@TestTrail #1 #2\@Del{% 
  1936.     \def\@RemTspTemp{#1}%
  1937. \def\RemTsp #1#2{%
  1938.     \edef\@RemTspTempOne{#2#2 }% 
  1939.     \expandafter\@TestTrail\@RemTspTempOne\@Del
  1940.     \if\StringsEqualConditional{#2#2}{\@RemTspTemp}% 
  1941.         \def#1{#2}% 
  1942.     \else
  1943.         \edef\@RemTspTempA{\noexpand\edef\noexpand#1{\@RemTspTemp}}%
  1944.         \@RemTspTempA
  1945.     \fi
  1946. \def\@TestLead #1 #2\@Del{\def\@RemLspOne{#1}}
  1947. \def\RemLsp #1#2{%
  1948.     \edef\@TempRemLsp{#2#2\space}%
  1949.     \expandafter\@TestLead\@TempRemLsp\@Del
  1950.     \if\EmptyStringConditional{\@RemLspOne}% 
  1951.         \expandafter\@RemLspThree #2\@Del{#1}% 
  1952.     \else
  1953.         \def#1{#2}%
  1954.     \fi
  1955. \edef\@RemLspTwo{% 
  1956.     \def\noexpand\@RemLspThree\space ##1\noexpand\@Del##2{% 
  1957.         \def##2{##1}% 
  1958.     }% 
  1959. \@RemLspTwo
  1960. \catcode`\@ = 12
  1961. \NameDef{@InputD-remtlsp.tip}{}
  1962. \newcount\StringLengthResult
  1963. \catcode`\@ = 11
  1964. \newbox\@StringLengthBoxA
  1965. \newbox\@StringLengthBoxB
  1966. \def\StringLength #1{% 
  1967.     \setbox\@StringLengthBoxA = \hbox{\tt #1}% 
  1968.     \setbox\@StringLengthBoxB = \hbox{\tt A}% 
  1969.     \StringLengthResult = \wd\@StringLengthBoxA
  1970.     \divide\StringLengthResult by \wd\@StringLengthBoxB
  1971. \catcode`\@ = 12
  1972. \NameDef{@InputD-strleng.tip}{}
  1973. \catcode`\@ = 11
  1974. \def\ConvertArgsToListAndAppend #1#2{% 
  1975.     \def\@Co{#1}%
  1976.     \@ItemRec #2,\@Delimiter
  1977. \def\@ItemRec #1,{% 
  1978.     \RemLsp{\@ItemTemp}{#1}% 
  1979.     \expandafter\RightAppendElement\@Co{\@ItemTemp}% 
  1980.     \futurelet\@ItemRecTok\@ItemRecOne
  1981. \def\@ItemRecOne{%
  1982.     \RecursionMacroEnd{\ifx\@ItemRecTok\@Delimiter}% 
  1983.                      {\@ItemRecEnd}{\@ItemRec}% 
  1984. \def\@ItemRecEnd\@Delimiter{}
  1985. \catcode`\@ = 12
  1986. \NameDef{@InputD-conval.tip}{}
  1987. \catcode`\@ = 11
  1988. \def\arabic #1{\number#1}
  1989. \def\roman #1{%
  1990.     \romannumeral #1%
  1991. \def\Roman #1{%
  1992.     \ifcase #1\or
  1993.         I\or II\or III\or IV\or V\or
  1994.         VI\or VII\or VIII\or IX\or X\or
  1995.         XI\or XII\or XIII\or XIV\or XV\or
  1996.         XVI\or XVII\or XVIII\or XIX\or XX\or
  1997.         XXI\or XXII\or XXIII\or XXIV\or XV%
  1998.     \else
  1999.         \errmessage{\string\Roman: argument \number#1 out
  2000.             of range, larger than 25.}%
  2001.     \fi
  2002. \def\alph #1{%
  2003.     \ifcase #1%
  2004.         \or a\or b\or c\or d\or e\or f\or g\or h\or i% 
  2005.     \else
  2006.         \@Morealph{#1}%
  2007.     \fi
  2008. \def\@Morealph #1{%
  2009.     \ifcase #1%
  2010.         \or  \or  \or  \or  \or  \or  \or  \or  \or
  2011.         \or j\or k\or l\or m\or n\or o\or p\or q\or r%
  2012.         \or s\or t\or u\or v\or w\or x\or y\or z%
  2013.     \else
  2014.         \errmessage{\string\@Morealph: argument too large.}%
  2015.     \fi
  2016. \def\Alph #1{%
  2017.     \ifcase #1%
  2018.     \or A\or B\or C\or D\or E\or F\or G\or H\or I%
  2019.     \else
  2020.         \@MoreAlph{#1}%
  2021.     \fi
  2022. \def\@MoreAlph #1{%
  2023.     \ifcase #1%
  2024.         \or  \or  \or  \or  \or  \or  \or  \or  \or
  2025.         \or J\or K\or L\or M\or N\or O\or P\or Q\or R%
  2026.         \or S\or T\or U \or V\or W\or X\or Y\or Z%
  2027.     \else
  2028.         \errmessage{\string\@MoreAlph: argument too large.}%
  2029.     \fi
  2030. \catcode`\@ = 12
  2031. \NameDef{@InputD-printco.tip}{}
  2032. \catcode`\@ = 11
  2033. \def\NewCounter #1#2#3#4{%
  2034.     \wlog{\string\NewCounter: allocating new counter "#1."}%
  2035.     \if\NameDefinedConditional{@C-#1}%
  2036.         \errmessage{\string\NewCounter: counter "#1" was
  2037.             allocated previously.}% 
  2038.     \fi
  2039.     \expandafter\newcountOF\csname @C-#1\endcsname
  2040.     \ReassignCounter{#1}{#2}{#3}{#4}%
  2041.     \NameDef{@ResetC-#1}{}% 
  2042. \def\ReassignCounter #1#2#3#4{%
  2043.     \if\NameDefinedConditional{@C-#1}%
  2044.     \else
  2045.         \errmessage{\string\ReassignCounter: counter "#1"
  2046.             not defined before.}% 
  2047.     \fi
  2048.     \NameDef{@TheC-#1}{% 
  2049.         \expandafter\expandafter\expandafter#2% 
  2050.         \expandafter{\csname @C-#1\endcsname}% 
  2051.     }% 
  2052.     \NameDef{@TheArabicC-#1}{% 
  2053.         \expandafter\the\csname @C-#1\endcsname 
  2054.     }% 
  2055.     \NameDef{@PriC-#1}{#3}% 
  2056.     \NameDef{@RefC-#1}{#4}%
  2057. \def\TheCounter #1{% 
  2058.     \NameUse{@TheC-#1}% 
  2059. \def\TheArabicCounter #1{% 
  2060.     \NameUse{@TheArabicC-#1}% 
  2061. \def\PrintCounter #1{% 
  2062.     \NameUse{@PriC-#1}% 
  2063. \def\RefCounter #1{% 
  2064.     \NameUse{@RefC-#1}% 
  2065. \let\RefCounterTwo = \RefCounter
  2066. \def\CounterToRegister #1#2{%
  2067.     #1 = \csname @C-#2\endcsname\relax
  2068. \def\AddCounterToResetList #1#2{% 
  2069.     {% 
  2070.         \def\@ResetCounter{\noexpand\@ResetCounter}% 
  2071.         \expandafter\xdef\csname @ResetC-#2\endcsname{% 
  2072.             \csname @ResetC-#2\endcsname\@ResetCounter{#1}% 
  2073.         }% 
  2074.     }% 
  2075. \def\StepCounter #1{% 
  2076.     \global\expandafter\advance\csname @C-#1\endcsname by 1
  2077.     \NameUse{@ResetC-#1}% 
  2078. \def\SetCounter #1#2{% 
  2079.     \global\expandafter\csname @C-#1\endcsname = #2\relax
  2080. \def\AssignCounterToReg #1#2{%
  2081.     #2 = \expandafter\csname @C-#1\endcsname
  2082.     \relax
  2083. \def\@ResetCounter #1{% 
  2084.     \global\csname @C-#1\endcsname = 0
  2085. \catcode`\@ = 12
  2086. \NameDef{@InputD-counters.tip}{}
  2087. \newcount\ReturnNumberOfLinesInFile
  2088. \catcode`\@ = 11
  2089. \newcount\@CharCodeNumberOfLines
  2090.     \catcode`\^^M = \active % 
  2091.     \gdef\@SetUpLineCounting{%
  2092.         \gdef
  2093.             {\global\advance\ReturnNumberOfLinesInFile by 1 }% 
  2094.     }% 
  2095. \def\NumberOfLinesInFile #1{% 
  2096.     \begingroup
  2097.         \global\ReturnNumberOfLinesInFile = 0
  2098.         \DoLoop{\@CharCodeNumberOfLines}{0}{1}{127}% 
  2099.             {\catcode\@CharCodeNumberOfLines = 9 }
  2100.         \@SetUpLineCounting
  2101.         \catcode`\^^M = \active
  2102.         \input #1
  2103.     \endgroup
  2104.     \ifnum\ReturnNumberOfLinesInFile = 1
  2105.         \if\CompareFilesConditional{#1}{nul}%
  2106.             \ReturnNumberOfLinesInFile = 0
  2107.         \fi
  2108.     \fi
  2109. \catcode`\@ = 12
  2110. \NameDef{@InputD-countl.tip}{}
  2111. \def\CenterRightLines #1#2{
  2112.     \setbox 0 = \hbox{#1}
  2113.     \dimen0 = \hsize
  2114.     \advance\dimen0 by -\wd0
  2115.     \divide\dimen0 by 2
  2116.     \rightline{#1\hskip\dimen0}
  2117.     \rightline{#2\hskip\dimen0}
  2118. \NameDef{@InputD-crline.tip}{}
  2119. \catcode`\@ = 11
  2120. \newcount\@CreateArrayCount
  2121. \def\CCreateArray #1#2#3{%
  2122.     \NameEdef{#1-low}{\number#2}%
  2123.     \NameEdef{#1-high}{#3}%
  2124.     \ifnum #3<#2
  2125.         \errmessage{\string\CCreateArray: low array boundary
  2126.             \number#2 is larger than upper array boundary
  2127.             \number#3}%
  2128.     \fi
  2129.     \DoLoop{\@CreateArrayCount}{#2}{1}{#3}{%
  2130.         \NameDef{#1-\the\@CreateArrayCount}{}%
  2131.     }
  2132. \newcount\@ConvertStringIntoArrayLength
  2133. \newcount\@ConvertStringIntoArrayCount
  2134. \def\ConvertStringIntoArray #1#2{%
  2135.     \def\@ConvertArrayName{#1}%
  2136.     \edef\@ConvertArrayString{#2}%
  2137.     \StringLength{\@ConvertArrayString}%
  2138.     \@ConvertStringIntoArrayLength = \StringLengthResult
  2139.     \advance\@ConvertStringIntoArrayLength by -1
  2140.     \CCreateArray{\@ConvertArrayName}%
  2141.         {0}{\the\@ConvertStringIntoArrayLength}%
  2142.     \@ConvertStringIntoArrayCount = 0
  2143.     \expandafter\@ConvertStringIntoArray
  2144.         \@ConvertArrayString\@ConvertEnd
  2145. \def\@ConvertStringIntoArray #1#2\@ConvertEnd{%
  2146.     \CLoadArrayElementEdef{\@ConvertArrayName}%
  2147.         {\the\@ConvertStringIntoArrayCount}{#1}%
  2148.     \if\EmptyStringConditional{#2}%
  2149.         \def\@ConvertStringIntoArrayNext{}%
  2150.     \else
  2151.         \advance\@ConvertStringIntoArrayCount by 1\relax
  2152.         \def\@ConvertStringIntoArrayNext{%
  2153.             \@ConvertStringIntoArray #2\@ConvertEnd%
  2154.         }%
  2155.     \fi
  2156.     \@ConvertStringIntoArrayNext
  2157. \def\CCheckIndex #1#2{%
  2158.     \expandafter\ifx\csname #1-low\endcsname\relax
  2159.         \errmessage{\string\CCheckIndex: no array #1.}%
  2160.     \fi
  2161.     \ifnum #2<\NameUse{#1-low}%
  2162.         \errmessage{Index #2 for array #1 too small.}%
  2163.     \fi
  2164.     \ifnum #2>\NameUse{#1-high}%
  2165.         \errmessage{Index #2 for array #1 too large.}%
  2166.     \fi
  2167. \def\CArrayAccess #1#2#3{%
  2168.     \CCheckIndex{#1}{#2}%
  2169.     \edef#3{\NameUse{#1-#2}}%
  2170. \newcount\@CArrayAccessIntervalCount
  2171. \def\CArrayAccessInterval #1#2#3#4{%
  2172.     \CCheckIndex{#1}{#2}%
  2173.     \CCheckIndex{#1}{#3}%
  2174.     \ifnum #2>#3\relax
  2175.         \errmessage{\string\CArrayAccessInterval: low index
  2176.             (\PoundSignText 2) > high index
  2177.             (PoundSignText 3).}%
  2178.     \fi
  2179.     \def#4{}%
  2180.     \DoLoop
  2181.         {\@CArrayAccessIntervalCount}{#2}{1}{#3}{%
  2182.         \CArrayAccess{#1}{\the\@CArrayAccessIntervalCount}%
  2183.             {\@CArrayAccessInterval}%
  2184.         \edef#4{#4\@CArrayAccessInterval}%
  2185.     }%
  2186. \def\CLoadArrayElement #1#2#3{%
  2187.     \CCheckIndex{#1}{#2}%
  2188.     \NameDef{#1-#2}{#3}%
  2189. \def\CLoadArrayElementEdef #1#2#3{%
  2190.     \CCheckIndex{#1}{#2}%
  2191.     \NameEdef{#1-#2}{#3}%
  2192. \newcount\@CShowArrayCount
  2193. \def\CShowArray #1{%
  2194.     \DoLoop
  2195.         {\@CShowArrayCount}%
  2196.         {\NameUse{#1-low}}% 
  2197.         {1}% 
  2198.         {\NameUse{#1-high}}%
  2199.         {\wlog{Index \the\@CShowArrayCount:
  2200.             \NameUse{#1-\the\@CShowArrayCount}}}%
  2201. \catcode`\@ = 12
  2202. \NameDef{@InputD-csar.tip}{}
  2203. \newcount\BackslashCharCode
  2204. \BackslashCharCode = `\\
  2205. \edef\mac #1{%
  2206.     {% 
  2207.         \noexpand\tt
  2208.         \char\the\BackslashCharCode\space
  2209.         #1% 
  2210.     }%
  2211. \NameDef{@InputD-cssprint.tip}{}
  2212. \def\CSToString #1#2{%
  2213.     {%
  2214.         \escapechar = -1
  2215.         \xdef#1{\string #2}%
  2216.     }%
  2217. \NameDef{@InputD-cstostr.tip}{}
  2218. \catcode`\@ = 11
  2219. \newread\@CatIn
  2220. \def\CSToStringCat #1#2{%
  2221.     {%
  2222.         \escapechar = -1
  2223.         \OpenGenericOStream{cstostrc.tmp}%
  2224.         \immediate\write\GenericOStream{\string#2\%}%
  2225.         \CloseGenericOStream
  2226.         \openin\@CatIn = cstostrc.tmp
  2227.         \global\read\@CatIn to #1%
  2228.         \closein\@CatIn
  2229.     }%
  2230. \catcode`\@ = 12
  2231. \NameDef{@InputD-cstostrc.tip}{}
  2232. \catcode`\@ = 11
  2233. \newif\if@ControlSequenceConditional
  2234. \def\ControlSequenceConditional #1{%
  2235.     TT\fi
  2236.     {%
  2237.         \escapechar = -1
  2238.         \xdef\@ControlSequenceConditionalOne{\string#1}%
  2239.         \escapechar = `:\relax
  2240.         \xdef\@ControlSequenceConditionalTwo{\string#1}%
  2241.     }%
  2242.     \ifx\@ControlSequenceConditionalOne
  2243.         \@ControlSequenceConditionalTwo
  2244.         \@ControlSequenceConditionalfalse
  2245.     \else
  2246.         \@ControlSequenceConditionaltrue
  2247.     \fi
  2248.     \if@ControlSequenceConditional
  2249. \catcode`\@ = 12
  2250. \NameDef{@InputD-ctestcs.tip}{}
  2251. \catcode`\@ = 11
  2252. \long\def\DoLongFutureLet #1#2#3#4{% 
  2253.     \def\@FutureLetDecide{% 
  2254.         #1#2\@FutureLetToken
  2255.             \def\@FutureLetNext{#3}%
  2256.         \else
  2257.             \def\@FutureLetNext{#4}%
  2258.         \fi
  2259.         \@FutureLetNext
  2260.     }% 
  2261.     \futurelet\@FutureLetToken\@FutureLetDecide
  2262. \def\DoFutureLet #1#2#3#4{\DoLongFutureLet{#1}{#2}{#3}{#4}}
  2263. \catcode`\@ = 12
  2264. \NameDef{@InputD-futlet.tip}{}
  2265. \catcode`\@ = 11
  2266. \def\DblArg #1{% 
  2267.     \def\@DblArgTemp{#1}%
  2268.     \DoFutureLet{\ifx}{[}{\@DblArgTemp}{\@DblArgB}%
  2269. \def\@DblArgB #1{\@DblArgTemp[#1]{#1}}
  2270. \catcode`\@ = 12
  2271. \NameDef{@InputD-dblarg.tip}{}
  2272. \catcode`\@ = 11
  2273. \def\GobbleDoMore #1#2{%
  2274.     \def\@GobbleDoMore ##1#1{}%
  2275.     \expandafter#2\@GobbleDoMore
  2276. \catcode`\@ = 12
  2277. \NameDef{@InputD-gobblemo.tip}{}
  2278. \catcode`\@ = 11
  2279. \def\DefaultArg #1#2#3{%
  2280.     \def\@DefaultArgMacro{#1}%
  2281.     \edef\@EmptyOtherArg{#2}%
  2282.     \edef\@DefaultArgDefault{#3}%
  2283.     \@DefaultArg #2\@DefaultArgEnd
  2284. \def\@DefaultArg{%
  2285.     \futurelet\@DefaultArgSymbol\@DefaultArgOne
  2286. \def\@DefaultArgOne{%
  2287.     \ifx\@DefaultArgSymbol\@DefaultArgEnd
  2288.         \expandafter\edef\@DefaultArgMacro{\@DefaultArgDefault}% 
  2289.     \else
  2290.         \expandafter\edef\@DefaultArgMacro{\@EmptyOtherArg}% 
  2291.     \fi
  2292.     \GobbleDoMore{\@DefaultArgEnd}{\relax}%
  2293. \catcode`\@ = 12
  2294. \NameDef{@InputD-defauarg.tip}{}
  2295. \def\DicEntry #1{%
  2296.     \par
  2297.     \hangafter = 1
  2298.     \hangindent = 5pt
  2299.     \noindent
  2300.     {\bf #1}%
  2301.     \mark{#1}%
  2302.     \hskip 1em plus .2em minus .2em
  2303.     \ignorespaces
  2304. \NameDef{@InputD-dicentry.tip}{}
  2305. \catcode`\@ = 11
  2306. \newif\if@PrefixResult
  2307. \newcount\@LengthPrefixString
  2308. \newcount\@LengthMainString
  2309. \def\PrefixConditional #1#2{% 
  2310.     TT\fi
  2311.     \StringLength{#1}%
  2312.     \@LengthMainString = \StringLengthResult
  2313.     \StringLength{#2}% 
  2314.     \@LengthPrefixString = \StringLengthResult
  2315.     \ifnum\@LengthMainString < \@LengthPrefixString
  2316.         \@PrefixResultfalse
  2317.     \else
  2318.         \@PrefixConditionalTwo{#1}{#2}% 
  2319.     \fi
  2320.     \if@PrefixResult
  2321. \def\@PrefixConditionalTwo #1#2{% 
  2322.     \edef\@PrefixBoth{#1#2}% 
  2323.     \edef\@PrefixTemp{% 
  2324.         \def\noexpand\@TestPrefix ####1#2####2\noexpand\@Del{% 
  2325.             \noexpand\if\noexpand\EmptyStringConditional{####1}%
  2326.         }% 
  2327.     }% 
  2328.     \ShowX\@PrefixTemp
  2329.     \@PrefixTemp
  2330.     \ShowX{\@TestPrefix}%
  2331.     \expandafter\@TestPrefix\@PrefixBoth\@Del
  2332.         \@PrefixResulttrue
  2333.     \else
  2334.         \@PrefixResultfalse
  2335.     \fi
  2336. \catcode`\@ = 12
  2337. \NameDef{@InputD-isprefix.tip}{}
  2338. \catcode`\@ = 11
  2339. \def\DropPrefix #1#2#3{%
  2340.     \if\PrefixConditional{#1}{#2}%
  2341.         \edef\@PrefixConditionalTemp{% 
  2342.             \def\noexpand\@PrefixConditionalTempTwo #2####1% 
  2343.                                         \noexpand\@Del{%
  2344.                 \def\noexpand #3{####1}}%
  2345.         }%
  2346.         \@PrefixConditionalTemp
  2347.         \ShowX{\@PrefixConditionalTemp}%
  2348.         \expandafter\@PrefixConditionalTempTwo #1\@Del
  2349.     \else
  2350.         \wlog{\string\DropPrefix: "#2" is NOT a prefix of "#1"}%
  2351.         \edef#3{#1}%
  2352.     \fi
  2353. \catcode`\@ = 12
  2354. \NameDef{@InputD-droppre.tip}{}
  2355.     \catcode`\p = 12
  2356.     \catcode`\t = 12
  2357.     \NameGdef{DropPoints}#1pt{\NameGdef{DropPointsResult}{#1}}
  2358. \NameDef{@InputD-droppt.tip}{}
  2359. \def\DumpOneReg #1{%
  2360.     \wlog{Parameter "\string#1", value = \the#1}%
  2361. \def\DumpAllRegs{%
  2362.     \wlog{\string\DumpAllRegs: Counter parameters first.}%
  2363.     \DumpOneReg{\time}%
  2364.     \DumpOneReg{\day}% 
  2365.     \DumpOneReg{\month}% 
  2366.     \DumpOneReg{\year}% 
  2367.     \DumpOneReg{\pretolerance}% 
  2368.     \DumpOneReg{\tolerance}% 
  2369.     \DumpOneReg{\doublehyphendemerits}% 
  2370.     \DumpOneReg{\finalhyphendemerits}% 
  2371.     \DumpOneReg{\adjdemerits}% 
  2372.     \DumpOneReg{\linepenalty}% 
  2373.     \DumpOneReg{\looseness}% 
  2374.     \DumpOneReg{\linepenalty}% 
  2375.     \DumpOneReg{\hyphenpenalty}% 
  2376.     \DumpOneReg{\exhyphenpenalty}% 
  2377.     \DumpOneReg{\binoppenalty}% 
  2378.     \DumpOneReg{\relpenalty}% 
  2379.     \DumpOneReg{\clubpenalty}% 
  2380.     \DumpOneReg{\widowpenalty}% 
  2381.     \DumpOneReg{\displaywidowpenalty}% 
  2382.     \DumpOneReg{\brokenpenalty}% 
  2383.     \DumpOneReg{\predisplaypenalty}% 
  2384.     \DumpOneReg{\postdisplaypenalty}% 
  2385.     \DumpOneReg{\interlinepenalty}% 
  2386.     \DumpOneReg{\floatingpenalty}% 
  2387.     \DumpOneReg{\outputpenalty}% 
  2388.     \DumpOneReg{\pausing}% 
  2389.     \DumpOneReg{\tracingonline}% 
  2390.     \DumpOneReg{\tracinglostchars}% 
  2391.     \DumpOneReg{\tracingmacros}% 
  2392.     \DumpOneReg{\tracingstats}% 
  2393.     \DumpOneReg{\tracingparagraphs}% 
  2394.     \DumpOneReg{\tracingpages}% 
  2395.     \DumpOneReg{\tracingoutput}% 
  2396.     \DumpOneReg{\tracingcommands}% 
  2397.     \DumpOneReg{\tracingrestores}% 
  2398.     \DumpOneReg{\mag}% 
  2399.     \DumpOneReg{\uchyph}% 
  2400.     \DumpOneReg{\lefthyphenmin}% 
  2401.     \DumpOneReg{\righthyphenmin}% 
  2402.     \DumpOneReg{\defaultskewchar}% 
  2403.     \DumpOneReg{\escapechar}% 
  2404.     \DumpOneReg{\endlinechar}% 
  2405.     \DumpOneReg{\newlinechar}% 
  2406.     \DumpOneReg{\fam}% 
  2407.     \DumpOneReg{\hbadness}% 
  2408.     \DumpOneReg{\vbadness}% 
  2409.     \DumpOneReg{\badness}% 
  2410.     \DumpOneReg{\showboxdepth}% 
  2411.     \DumpOneReg{\showboxbreadth}% 
  2412.     \DumpOneReg{\deadcycles}% 
  2413.     \DumpOneReg{\maxdeadcycles}% 
  2414.     \DumpOneReg{\holdinginserts}% 
  2415.     \DumpOneReg{\hangafter}% 
  2416.     \DumpOneReg{\globaldefs}% 
  2417.     \DumpOneReg{\delimiterfactor}% 
  2418.     \DumpOneReg{\inputlineno}% 
  2419.     \DumpOneReg{\language}% 
  2420.     \wlog{\string\DumpAllRegs: Dimension parameters next.}%
  2421.     \DumpOneReg{\hfuzz}% 
  2422.     \DumpOneReg{\vfuzz}% 
  2423.     \DumpOneReg{\overfullrule}% 
  2424.     \DumpOneReg{\lineskiplimit}% 
  2425.     \DumpOneReg{\maxdepth}% 
  2426.     \DumpOneReg{\splitmaxdepth}% 
  2427.     \DumpOneReg{\boxmaxdepth}% 
  2428.     \DumpOneReg{\delimitershortfall}% 
  2429.     \DumpOneReg{\nulldelimiterspace}% 
  2430.     \DumpOneReg{\scriptspace}% 
  2431.     \DumpOneReg{\mathsurround}% 
  2432.     \DumpOneReg{\predisplaysize}% 
  2433.     \DumpOneReg{\displaywidth}% 
  2434.     \DumpOneReg{\displayindent}% 
  2435.     \DumpOneReg{\parindent}% 
  2436.     \DumpOneReg{\hangindent}% 
  2437.     \DumpOneReg{\hoffset}% 
  2438.     \DumpOneReg{\voffset}% 
  2439.     \wlog{\string\DumpAllRegs: Glue parameters last.}%
  2440.     \DumpOneReg{\baselineskip}% 
  2441.     \DumpOneReg{\lineskip}% 
  2442.     \DumpOneReg{\topskip}% 
  2443.     \DumpOneReg{\splittopskip}% 
  2444.     \DumpOneReg{\parskip}% 
  2445.     \DumpOneReg{\leftskip}% 
  2446.     \DumpOneReg{\rightskip}% 
  2447.     \DumpOneReg{\emergencystretch}% 
  2448.     \DumpOneReg{\abovedisplayskip}% 
  2449.     \DumpOneReg{\abovedisplayshortskip}% 
  2450.     \DumpOneReg{\belowdisplayskip}% 
  2451.     \DumpOneReg{\belowdisplayshortskip}% 
  2452.     \wlog{\string\DumpAllRegs: done.}%
  2453. \NameDef{@InputD-dumppars.tip}{}
  2454. \catcode`\@ = 11
  2455. \def\GenAeol #1{% 
  2456.     \edef #1{%
  2457.         \bgroup
  2458.         \noexpand\MakeEolActive
  2459.         \noexpand\@GenAeolOne{% 
  2460.             \csname\string #1-2\endcsname}%
  2461.     }%
  2462.     \NameDef{\string #1-2}##1%
  2463.     \MakeEolActive
  2464.     \gdef\@GenAeolOne #1#2
  2465.     {% 
  2466.         \egroup% 
  2467.         #1{#2}% 
  2468.     }%
  2469. \catcode`\@ = 12
  2470. \NameDef{@InputD-genaeol.tip}{}
  2471. \catcode`\@ = 11
  2472. \newif\if@VerbFirstLineSuppress
  2473. \def\OpenVerbWrFile #1#2#3{%
  2474.     \immediate\openout #3 = #1.#2
  2475.     \wlog{\string\OpenVerbWrFile: opened "#1.#2" for
  2476.         literal writing.}%
  2477. \def\CloseVerbWrFile #1{%
  2478.     \immediate\closeout #1
  2479.     \wlog{\string\CloseVerbWrFile: closed file for literal writing.}%
  2480. \def\BeginVerbWr #1#2{%
  2481.     \begingroup
  2482.     \def\@VerbWrStream{#1}%
  2483.     \CSToStringCat{\@EndVerbWrSt}{#2}%
  2484.     \wlog{\string\BeginVerbWr: begin}% 
  2485.     \MkOthers
  2486.     \MakeEolActive
  2487.     \@VerbWrTabHandling
  2488.     \@VerbFirstLineSuppresstrue
  2489.     \expandafter\expandafter\expandafter
  2490.         \@BeginVerbWrY\expandafter{\@EndVerbWrSt}%
  2491.     \catcode `| = 0
  2492.     \catcode`\\ =12
  2493.     |gdef|@BeginVerbWrY #1{%
  2494.         |def|@BeginVerbWrX ##1\#1{%
  2495.             |@BeginVerbWr ##1% 
  2496.             |@VerbWrDoneToken
  2497.             |@VerbWrDone
  2498.         }
  2499.         |@BeginVerbWrX
  2500.     }
  2501. \def\@VerbWrTabHandling{%
  2502.     \MakeTabActive
  2503.     \@VerbWrTabHandlingOne
  2504. {\MakeTabActive
  2505. \gdef\@VerbWrTabHandlingOne{\def^^I{\@TabAsLiteral}}% 
  2506. \def\@BeginVerbWr{% 
  2507.     \DoFutureLet{\ifx}% 
  2508.         {\@VerbWrDoneToken}% 
  2509.         {\GobbleDoMore
  2510.             {\@VerbWrDoneToken}{\relax}}%
  2511.         {\@BeginVerbWrTwo}% 
  2512. \GenAeol{\@BeginVerbWrTwo}{%
  2513.     \if@VerbFirstLineSuppress
  2514.         \@VerbFirstLineSuppressfalse
  2515.     \else
  2516.         \immediate\write\@VerbWrStream{#1}%
  2517.     \fi
  2518.     \@BeginVerbWr
  2519. \def\@VerbWrDone{% 
  2520.     \endgroup
  2521.     \wlog{\string\@VerbWrDone: done}%
  2522. \catcode`\@ = 12
  2523. \NameDef{@InputD-verbwr.tip}{}
  2524. \catcode`\@ = 11
  2525. \def\@DefEndNoteFileExt{eno}
  2526. \newwrite\@EndNoteStream
  2527. \newcount\@EndNoteCounter
  2528. \def\StartEndNoteWriting #1#2#3#4{% 
  2529.     \@EndNoteCounter = 0
  2530.     \DefaultArg{\@EndNoteBaseName}{#1}{\jobname}% 
  2531.     \DefaultArg{\@EndNoteFileExt}{#2}{\@DefEndNoteFileExt}% 
  2532.     \edef\@EndNoteFileName{\@EndNoteBaseName.\@EndNoteFileExt}%
  2533.     \wlog{\string\StartEndNoteWriting: output will be written to file
  2534.             "\@EndNoteFileName".}
  2535.     \edef\@EndNoteBefore{\string#3}%
  2536.     \edef\@EndNoteAfter{\string#4}%
  2537.     \OpenVerbWrFile{\@EndNoteBaseName}{\@EndNoteFileExt}% 
  2538.                    {\@EndNoteStream}%
  2539. \def\BeginEndNote{% 
  2540.     \advance\@EndNoteCounter by 1
  2541.     \ifnum\@EndNoteCounter > 1
  2542.         \immediate\write\@EndNoteStream{\@EndNoteAfter}% 
  2543.     \fi
  2544.     \immediate\write\@EndNoteStream{\@EndNoteBefore}%
  2545.     \BeginVerbWr{\@EndNoteStream}{\EndEndNote}
  2546. \def\EndEndNoteWriting{% 
  2547.     \immediate\write\@EndNoteStream{\@EndNoteAfter}% 
  2548.     \CloseVerbWrFile{\@EndNoteStream}% 
  2549. \def\ReadInEndNotes{%
  2550.     \input \@EndNoteFileName
  2551. \catcode`\@ = 12
  2552. \NameDef{@InputD-endn-mac.tip}{}
  2553. \catcode`\@ = 11
  2554. \newdimen \Delta@XY
  2555. \newskip\@ParListBeforeAfter
  2556. \newskip\@ParListBetweenLabels
  2557. \newskip\@ParListAfterLabel
  2558. \newcount\@LabeledParNesting    \@LabeledParNesting = 0
  2559. \newcount\@LabelCounter
  2560. \def\BeginAList #1#2#3#4#5#6#7{%
  2561.     \par
  2562.     \bgroup
  2563.     \advance\leftskip by #1
  2564.     \advance\rightskip by #2
  2565.     \advance \@LabeledParNesting by 1
  2566.     \@LabelCounter = 0
  2567.     \Delta@XY = #3
  2568.     \ifdim\Delta@XY < 0pt
  2569.         \errmessage{\string\BeginAList: negative Delta{xy},
  2570.             made positive.}%
  2571.     \fi
  2572.     \@ParListBeforeAfter = #4   
  2573.     \@ParListBetweenLabels = #5
  2574.     \@ParListAfterLabel = #6
  2575.     \SetParIndent{#7}
  2576. \def\EndAList{% 
  2577.     \par
  2578.     \vskip\@ParListBeforeAfter
  2579.     \egroup
  2580. \def\@GenLabel #1{%
  2581.     \par
  2582.     \advance\@LabelCounter by 1
  2583.     \ifnum\@LabelCounter = 1
  2584.         \parskip = \@ParListBeforeAfter
  2585.     \else
  2586.         \parskip = \@ParListBetweenLabels
  2587.     \fi
  2588.     \noindent
  2589.     \hbox to 0pt{#1}%
  2590.     \parskip = \@ParListAfterLabel
  2591.     \ignorespaces
  2592. \def\ItemLL #1{% 
  2593.     \@GenLabel{%
  2594.         \hskip -\Delta@XY
  2595.         #1%
  2596.         \hfil
  2597.     }%
  2598. \def\ItemLR #1{%
  2599.     \@GenLabel{%
  2600.         \hss
  2601.         #1%
  2602.         \hskip\Delta@XY
  2603.     }%
  2604. \def\ItemRL #1{%
  2605.     \@GenLabel{%
  2606.         \hskip\Delta@XY
  2607.         #1%
  2608.         \hss
  2609.     }%
  2610. \def\ItemRR #1{%
  2611.     \@GenLabel{%
  2612.         \hfil
  2613.         #1%
  2614.         \hskip -\Delta@XY
  2615.     }%
  2616. \catcode`\@ = 12
  2617. \NameDef{@InputD-parv-1.tip}{}
  2618. \catcode`\@ = 11
  2619. \newcount\@EnumerateListDepth
  2620. \@EnumerateListDepth = 0
  2621. \NewCounter{Enumerate1}{\arabic}% 
  2622.     {\TheCounter{Enumerate1}.}{\TheCounter{Enumerate1}}
  2623. \NewCounter{Enumerate2}{\alph}% 
  2624.     {(\TheCounter{Enumerate2})}% 
  2625.     {\TheCounter{Enumerate1}.\TheCounter{Enumerate2}}
  2626. \NewCounter{Enumerate3}{\roman}% 
  2627.     {\TheCounter{Enumerate3}.}% 
  2628.     {\RefCounter{Enumerate2}.\TheCounter{Enumerate3}}
  2629. \NewCounter{Enumerate4}{\Alph}% 
  2630.     {\TheCounter{Enumerate4}.}% 
  2631.     {\RefCounter{Enumerate3}.\TheCounter{Enumerate4}}
  2632. \def\BeginEnumerate{% 
  2633.     \begingroup
  2634.     \global\advance\@EnumerateListDepth by 1
  2635.     \ifcase\@EnumerateListDepth
  2636.         \errmessage{\string\BeginEnumerate: no level
  2637.             zero.}%
  2638.     \or
  2639.         \SetCounter{Enumerate1}{0}%
  2640.         \@BeginEnumerateLevelOne
  2641.         \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate1}}{1}}%
  2642.         \def\Item{% 
  2643.             \StepCounter{Enumerate1}%
  2644.             \ItemLR{\PrintCounter{Enumerate1}}%
  2645.         }%
  2646.     \or
  2647.         \SetCounter{Enumerate2}{0}%
  2648.         \@BeginEnumerateLevelTwo
  2649.         \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate2}}{1}}%
  2650.         \def\Item{% 
  2651.             \StepCounter{Enumerate2}%
  2652.             \ItemLR{\PrintCounter{Enumerate2}}%
  2653.         }%
  2654.     \or
  2655.         \SetCounter{Enumerate3}{0}%
  2656.         \@BeginEnumerateLevelThree
  2657.         \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate3}}{1}}%
  2658.         \def\Item{% 
  2659.             \StepCounter{Enumerate3}%
  2660.             \ItemLR{\PrintCounter{Enumerate3}}%
  2661.         }%
  2662.     \or
  2663.         \SetCounter{Enumerate4}{0}%
  2664.         \@BeginEnumerateLevelFour
  2665.         \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate4}}{1}}%
  2666.         \def\Item{% 
  2667.             \StepCounter{Enumerate4}%
  2668.             \ItemLR{\PrintCounter{Enumerate4}}%
  2669.         }%
  2670.     \else
  2671.         \errmessage{\string\BeginEnumerate: maximum
  2672.             nesting level of 4 exceeded.}%
  2673.     \fi
  2674. \def\EndEnumerate{% 
  2675.     \EndAList
  2676.     \endgroup
  2677.     \global\advance\@EnumerateListDepth by -1
  2678. \catcode`\@ = 12
  2679. \NameDef{@InputD-enumlist.tip}{}
  2680. \def\ErrMessage #1{%
  2681.     \errmessage{#1}%
  2682.     \end
  2683. \NameDef{@InputD-errmess.tip}{}
  2684. \def\PrintEven #1{% 
  2685.     \ifodd #1\relax
  2686.     \else
  2687.         Number #1 is even.
  2688.     \fi
  2689. \NameDef{@InputD-evenprin.tip}{}
  2690. \everypar = {%
  2691.     \EvalEveryPars
  2692.     \ClearEveryPars
  2693. \def\EvalEveryParsCE{%
  2694.     \EveryParC
  2695.     \EveryParD
  2696.     \EveryParE
  2697. \def\EvalEveryPars{%
  2698.     \EveryParA
  2699.     \EveryParB
  2700.     \EvalEveryParsCE
  2701.     \EveryParZ
  2702. \def\ClearEveryPars{%
  2703.     \gdef\EveryParA{}%
  2704.     \gdef\EveryParB{}%
  2705.     \gdef\EveryParC{}%
  2706.     \gdef\EveryParD{}%
  2707.     \gdef\EveryParE{}%
  2708. \def\ClearEveryParsAll{%
  2709.     \ClearEveryPars
  2710.     \gdef\EveryParZ{}%
  2711. \ClearEveryParsAll
  2712. \NameDef{@InputD-everypar.tip}{}
  2713. \def\FigureBox #1#2{% 
  2714.     \BoxingA{% 
  2715.         \EmptyBox{#1}{0pt}{#2}%
  2716.     }% 
  2717. \NameDef{@InputD-figbox.tip}{}
  2718. \def\OverallSize #1#2{% 
  2719.     #1 = \ht#2\relax
  2720.     \advance#1 by \dp#2\relax
  2721. \NameDef{@InputD-sumhd.tip}{}
  2722. \def\LogPageTG #1{% 
  2723.     \wlog{\string\LogPageTG [#1]:}%
  2724.     \wlog{\string\pagetotal: \the\pagetotal,
  2725.         \string\pagegoal: \the\pagegoal}% 
  2726. \NameDef{@InputD-lpagetg.tip}{}
  2727. \newdimen\FreePageSpace
  2728. \def\ComputeFreeSpaceOnPage{%
  2729.     \par
  2730.     \LogPageTG{\string\ComputeFreeSpaceOnPage}%
  2731.     \ifdim\pagetotal = 0pt
  2732.         \FreePageSpace = \vsize
  2733.     \else
  2734.         \FreePageSpace = \pagegoal
  2735.         \advance\FreePageSpace by -\pagetotal
  2736.     \fi
  2737. \def\FreeSpaceConditional{%
  2738.     0pt = 0pt \fi
  2739.     \ComputeFreeSpaceOnPage
  2740.     \ifdim\FreePageSpace
  2741. \NameDef{@InputD-freespac.tip}{}
  2742. \def\FigureInPar #1#2#3#4#5{% 
  2743.     \par
  2744.     \message{\string\FigureInPar: start}%
  2745.     {%
  2746.         \setbox 0 = \vbox{#1}
  2747.         \OverallSize{\dimen0}{0}%
  2748.         \advance\dimen0 by #2
  2749.         \advance\dimen0 by #3
  2750.         \advance\dimen0 by #4
  2751.         \advance\dimen0 by #4
  2752.         \advance\dimen0 by \parskip
  2753.         \message{\string\FigureInPar:
  2754.             available space: \the\FreePageSpace}%
  2755.         \setbox 0 = \HboxR{\EmptyBox{#2}{0pt}{\hsize}}%
  2756.         \ifdim\FreeSpaceConditional < \dimen0
  2757.             \message{\string\FigureInPar:
  2758.                 insufficient space: make it a \string\topinsert.}%
  2759.             #1\unskip
  2760.             \space
  2761.             #5%
  2762.             \par
  2763.             \topinsert
  2764.                 \box0
  2765.             \endinsert
  2766.         \else
  2767.             \message{\string\FigureInPar:
  2768.                 Sufficient space: put it here.}%
  2769.             #1\unskip
  2770.             \space
  2771.             \vadjust{%
  2772.                 \vskip #4
  2773.                 \box0
  2774.                 \vskip #4
  2775.             }% 
  2776.             #5\par
  2777.         \fi
  2778.     }
  2779. \NameDef{@InputD-figinpar.tip}{}
  2780. \catcode`\@ = 11
  2781. \def\FirstLineSpecial #1{% 
  2782.     \par
  2783.     \begingroup
  2784.     #1
  2785.     \def\@FLDTemp{}%
  2786.     \dimen0 = \parindent
  2787.     \setbox0 = \hbox{ }% 
  2788.     \advance\dimen0 by -\wd0
  2789.     \@FLDOne
  2790. \def\@FLDOne #1 {% 
  2791.     \wlog{\string\@FLDOne: called with "#1".}%
  2792.     \xdef\@FLDTempa{#1\ }% 
  2793.     \@FLDTwo
  2794. \def\@FLDTwo{% 
  2795.     \wlog{\string\@FLDTwo: called}%
  2796.     \setbox0 = \hbox{\@FLDTempa}% 
  2797.     \advance\dimen0 by \wd0
  2798.     \ifdim\dimen0 < \hsize
  2799.         \edef\@FLDTemp{\@FLDTemp\@FLDTempa}% 
  2800.         \let\@FLDNext = \@FLDOne
  2801.     \else
  2802.         \leavevmode
  2803.         \@FLDTemp
  2804.         \unskip
  2805.         \break
  2806.         \aftergroup\@FLDTempa
  2807.         \let\@FLDNext = \endgroup
  2808.     \fi
  2809.     \@FLDNext
  2810. \catcode`\@ = 12
  2811. \NameDef{@InputD-firstldi.tip}{}
  2812. \def\ReportCharSize #1#2{%
  2813.     {%
  2814.         \count0 = #2\relax
  2815.         \setbox 0 = \hbox{#1\char\count0}%
  2816.         \wlog{\string\ReportCharSize: Font \string#1,
  2817.             character code \the\count0}%
  2818.         \wlog{ht / dp / wd: \the\ht0 \space / \the\dp0
  2819.             \space / \the\wd0}% 
  2820.     }%
  2821. \NameDef{@InputD-fo-char.tip}{}
  2822. \def\CharactersPerPica #1{% 
  2823.     \setbox0 = \hbox{%
  2824.         #1\relax
  2825.         This paragraph has 423 characters. We know that
  2826.         because we counted it. It is very simple to count, because
  2827.         the Emacs editor we are using has a function ``advance
  2828.         by one character.'' And with the prefix command (that's
  2829.         Emacs terminology) you can execute ``advance by
  2830.         one character'' 423~times. Now, let's hope that this text
  2831.         is representative of ordinary text so that our average
  2832.         number of characters per pica is correct.
  2833.     }%
  2834.     {%
  2835.         \count1 = \wd0
  2836.         \divide\count1 by 100
  2837.         \count0 = 423
  2838.         \multiply\count0 by 65536
  2839.         \multiply\count0 by 12
  2840.         \divide\count0 by \count1
  2841.         \count2 = \count0
  2842.         \divide\count2 by 100
  2843.         \IModN{\count0}{100}{\count3}%
  2844.         \the\count2.\LeadingZ{\count3}%
  2845.     }%
  2846. \NameDef{@InputD-font-cpp.tip}{}
  2847. \def\FormLine #1#2#3{%
  2848.     {%
  2849.         \setbox0 = \hbox{#2}%
  2850.         \dimen0 = #1%
  2851.         \advance\dimen0 by -\wd0
  2852.         \hbox{%
  2853.             \box0
  2854.             \hbox to 0pt{% 
  2855.                 \vrule width \dimen0 height 0.4pt depth 0pt
  2856.                 \hss
  2857.             }%
  2858.             \raise 3pt \hbox to \dimen0 {\hfil #3\hfil}% 
  2859.         }%
  2860.     }%
  2861. \NameDef{@InputD-formline.tip}{}
  2862. \catcode`\@ = 11
  2863. \def\@OctPrintFontTable#1{% 
  2864.     \hbox{% 
  2865.         \rm\'{}% 
  2866.         \kern-.2em
  2867.         \it #1\/% 
  2868.         \kern.05em
  2869.     }% 
  2870. \def\@HexPrintFontTable#1{% 
  2871.     \hbox{\rm\H{}\tt#1}% 
  2872. \def\@OddLineFontTable#1{% 
  2873.     \cr
  2874.     \noalign{\nointerlineskip}
  2875.     \multispan{19}\hrulefill&
  2876.     \setbox0 = \hbox{% 
  2877.         \lower 2.3pt\hbox{% 
  2878.             \@HexPrintFontTable{#1x}% 
  2879.         }% 
  2880.     }% 
  2881.     \smash{\box0}% 
  2882.     \cr
  2883.     \noalign{\nointerlineskip}
  2884. \def\@EvenLineFontTable{\cr\noalign{\hrule}}
  2885. \def\@FontTableStrut{\lower4.5pt\vbox to 14pt{}}
  2886. \def\BeginFontTable #1{% 
  2887.     $$
  2888.     \postdisplaypenalty = 0
  2889.     \global\count@=0
  2890.     #1
  2891.     \halign to\hsize\bgroup
  2892.         \@FontTableStrut##\relax    \tabskip = 0pt plus 10pt&
  2893.         &\hfil##\hfil&\vrule##% 
  2894.     \cr
  2895.     \lower6.5pt\null
  2896.     &&&
  2897.     \@OctPrintFontTable0&&
  2898.     \@OctPrintFontTable1&&
  2899.     \@OctPrintFontTable2&&
  2900.     \@OctPrintFontTable3&&
  2901.     \@OctPrintFontTable4&&
  2902.     \@OctPrintFontTable5&&
  2903.     \@OctPrintFontTable6&&
  2904.     \@OctPrintFontTable7&
  2905.     \@EvenLineFontTable
  2906. \def\EndFontTable{% 
  2907.     \raise 11.5pt\null
  2908.     &&&
  2909.     \@HexPrintFontTable 8&&
  2910.     \@HexPrintFontTable 9&&
  2911.     \@HexPrintFontTable A&&
  2912.     \@HexPrintFontTable B&&
  2913.     \@HexPrintFontTable C&&
  2914.     \@HexPrintFontTable D&&
  2915.     \@HexPrintFontTable E&&
  2916.     \@HexPrintFontTable F&
  2917.     \cr
  2918.     \egroup
  2919.     $$% 
  2920. \def\:{% 
  2921.     \setbox0 = \hbox{% 
  2922.         \char\count@
  2923.     }%
  2924.     \ifdim\ht0 > 7.5pt
  2925.         \@RepositionFontTable
  2926.     \else
  2927.         \ifdim\dp0 > 2.5pt
  2928.             \@RepositionFontTable
  2929.         \fi
  2930.     \fi
  2931.     \box0
  2932.     \global\advance\count@ by 1
  2933. \def\@RepositionFontTable{% 
  2934.     \setbox0 = \hbox{% 
  2935.         $
  2936.             \vcenter{% 
  2937.                 \kern 2pt
  2938.                 \box0
  2939.                 \kern 2pt
  2940.             }
  2941.         $%
  2942.     }% 
  2943. \def\NormalFontTable{%
  2944.     &\@OctPrintFontTable{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2945.         \:&&\:&&\@OddLineFontTable0
  2946.     &\@OctPrintFontTable{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2947.         \:&&\:&\@EvenLineFontTable
  2948.     &\@OctPrintFontTable{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2949.         \:&&\:&&\@OddLineFontTable1
  2950.     &\@OctPrintFontTable{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2951.         \:&&\:&\@EvenLineFontTable
  2952.     &\@OctPrintFontTable{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2953.         \:&&\:&&\@OddLineFontTable2
  2954.     &\@OctPrintFontTable{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2955.         \:&&\:&\@EvenLineFontTable
  2956.     &\@OctPrintFontTable{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2957.         \:&&\:&&\@OddLineFontTable3
  2958.     &\@OctPrintFontTable{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2959.         \:&&\:&\@EvenLineFontTable
  2960.     &\@OctPrintFontTable{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2961.         \:&&\:&&\@OddLineFontTable4
  2962.     &\@OctPrintFontTable{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2963.         \:&&\:&\@EvenLineFontTable
  2964.     &\@OctPrintFontTable{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2965.         \:&&\:&&\@OddLineFontTable5
  2966.     &\@OctPrintFontTable{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2967.         \:&&\:&\@EvenLineFontTable
  2968.     &\@OctPrintFontTable{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2969.         \:&&\:&&\@OddLineFontTable6
  2970.     &\@OctPrintFontTable{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2971.         \:&&\:&\@EvenLineFontTable
  2972.     &\@OctPrintFontTable{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2973.         \:&&\:&&\@OddLineFontTable7
  2974.     &\@OctPrintFontTable{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2975.         \:&&\:&\@EvenLineFontTable
  2976. \def\MoreFontTable{%
  2977.     &\@OctPrintFontTable{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2978.         \:&&\:&&\@OddLineFontTable8
  2979.     &\@OctPrintFontTable{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2980.         \:&&\:&\@EvenLineFontTable
  2981.     &\@OctPrintFontTable{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2982.         \:&&\:&&\@OddLineFontTable9
  2983.     &\@OctPrintFontTable{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2984.         \:&&\:&\@EvenLineFontTable
  2985.     &\@OctPrintFontTable{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2986.         \:&&\:&&\@OddLineFontTable A
  2987.     &\@OctPrintFontTable{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2988.         \:&&\:&\@EvenLineFontTable
  2989.     &\@OctPrintFontTable{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2990.         \:&&\:&&\@OddLineFontTable B
  2991.     &\@OctPrintFontTable{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2992.         \:&&\:&\@EvenLineFontTable
  2993.     &\@OctPrintFontTable{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2994.         \:&&\:&&\@OddLineFontTable C
  2995.     &\@OctPrintFontTable{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2996.         \:&&\:&\@EvenLineFontTable
  2997.     &\@OctPrintFontTable{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  2998.         \:&&\:&&\@OddLineFontTable D
  2999.     &\@OctPrintFontTable{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  3000.         \:&&\:&\@EvenLineFontTable
  3001.     &\@OctPrintFontTable{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  3002.         \:&&\:&&\@OddLineFontTable E
  3003.     &\@OctPrintFontTable{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  3004.         \:&&\:&\@EvenLineFontTable
  3005.     &\@OctPrintFontTable{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  3006.         \:&&\:&&\@OddLineFontTable F
  3007.     &\@OctPrintFontTable{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&
  3008.         \:&&\:&\@EvenLineFontTable
  3009. \catcode`\@ = 12
  3010. \NameDef{@InputD-fotable.tip}{}
  3011. \catcode`\@ = 11
  3012. \def\ForEachToken #1#2{%
  3013.     \def\@ForEachTokenMacro{#2}%
  3014.     \expandafter\@ForEachToken\the#1\@ForEachTokenDel
  3015. \def\@ForEachToken #1{% 
  3016.     \if\StringsEqualConditional{\string\@ForEachTokenDel}{\string#1}%
  3017.         \let\@ForEachTokenNext = \relax % Done.
  3018.     \else
  3019.         \@ForEachTokenMacro{#1}%        % Call macro and continue.
  3020.         \let\@ForEachTokenNext = \@ForEachToken
  3021.     \fi
  3022.     \@ForEachTokenNext
  3023. \catcode`\@ = 12
  3024. \NameDef{@InputD-fotok.tip}{}
  3025. \def\frac #1#2{% 
  3026.     {#1 \over #2}% 
  3027. \NameDef{@InputD-frac.tip}{}
  3028. \newdimen\CurrentFontSize
  3029. \def\DefineFontSizeGroup #1#2{% 
  3030.     \wlog{\string\DefineFontSizeGroup: defining group "#1" (#2 pt)}%
  3031.     \NameDef{FontSize#1}{% 
  3032.         \def\rm{\fam = 0        \NameUse{#1rm}}%
  3033.         \def\bf{\fam = \bffam   \NameUse{#1bf}}%
  3034.         \def\it{\fam = \itfam   \NameUse{#1it}}%
  3035.         \def\tt{\fam = \ttfam   \NameUse{#1tt}}%
  3036.         \def\sc{\NameUse{#1sc}}%
  3037.         \def\sl{\fam = \slfam   \NameUse{#1sl}}%
  3038.         \CurrentFontSize = #2pt
  3039.         \baselineskip = \LineSpaceMultFactor\CurrentFontSize
  3040.         \rm
  3041.     }
  3042. \def\LineSpaceMultFactor{1.2}
  3043. \NameDef{@InputD-fsized.tip}{}
  3044. \catcode`\@ = 11
  3045. \def\FutureLetNoSpace #1#2{% 
  3046.     \def\@FutureLetTokenA{#1}% 
  3047.     \def\@FutureLetTokenB{#2}% 
  3048.     \@FutureLetOne
  3049. \def\@FutureLetOne{% 
  3050.     \DoFutureLet{\ifx}{ }%
  3051.         {\@FutureLetThree}{\@FutureLetOk}%
  3052. \edef\@FutureLetNoSpaceTemp{% 
  3053.     \def\noexpand\@FutureLetThree\space{\noexpand\@FutureLetOne}% 
  3054. \@FutureLetNoSpaceTemp
  3055. \def\@FutureLetOk{% 
  3056.     \expandafter\futurelet\@FutureLetTokenA\@FutureLetTokenB
  3057. \long\def\DoLongFutureLetNoSpace #1#2#3#4{%
  3058.     \def\@FutureLetDecideNoSpace{%
  3059.         #1#2\@FutureLetTokenNoSpace
  3060.             \def\@FutureLetNextNoSpace{#3}%
  3061.         \else
  3062.             \def\@FutureLetNextNoSpace{#4}%
  3063.         \fi
  3064.         \@FutureLetNextNoSpace
  3065.     }% 
  3066.     \FutureLetNoSpace{\@FutureLetTokenNoSpace}%
  3067.         {\@FutureLetDecideNoSpace}%
  3068. \def\DoFutureLetNoSpace #1#2#3#4{%
  3069.     \DoLongFutureLetNoSpace{#1}{#2}{#3}{#4}%
  3070. \catcode`\@ = 12
  3071. \NameDef{@InputD-funospac.tip}{}
  3072. \def\ParLookAhead #1#2{%
  3073.     \DoLongFutureLetNoSpace{\ifx}{\par}%
  3074.         {#1}{#2}%
  3075. \NameDef{@InputD-futpar.tip}{}
  3076. \catcode`\@ = 11
  3077. \newskip\@MaxVskipGlue
  3078. \def\MaxVskip #1{% 
  3079.     \par
  3080.     \@MaxVskipGlue = #1\relax
  3081.     \ifdim\lastskip < \@MaxVskipGlue
  3082.         \ifdim\lastskip = 0pt
  3083.         \else
  3084.             \vskip -\lastskip
  3085.         \fi
  3086.         \vskip\@MaxVskipGlue
  3087.     \fi
  3088. \catcode`\@ = 12
  3089. \NameDef{@InputD-vsmax.tip}{}
  3090. \newdimen\NormalParIndent
  3091. \def\SetParIndent #1{%
  3092.     \NormalParIndent = #1%
  3093.     \parindent = #1%
  3094. \def\SuppressNextParIndent{%
  3095.     \global\parindent = 0pt
  3096.     \gdef\EveryParA{%
  3097.         \global\parindent = \NormalParIndent
  3098.         % \hskip-\parindent
  3099.     }%
  3100. \def\CancelSuppressNextParIndent{%
  3101.     \global\parindent = \NormalParIndent
  3102.     \gdef\EveryParA{}%
  3103. \NameDef{@InputD-parin.tip}{}
  3104. \newtoks\EveryHeading
  3105. \EveryHeading = {}
  3106. \catcode`\@ = 11
  3107. \newcount\@GenericHeadingCount
  3108. \newcount\@GenericHeadingIndent
  3109. \def\LineBreakHeading{%
  3110.     \errmessage{%
  3111.         \string\LineBreakHeading/\string\LineBreakToc:
  3112.             can only be used inside a heading.}%
  3113. \let\LineBreakToc = \LineBreakHeading
  3114. \def\IgnoreInRunnningHead #1{%
  3115.     #1%
  3116. \def\GenericHeading #1#2#3#4#5{% 
  3117.     \par
  3118.     \the\EveryHeading
  3119.     \@GenericHeadingCount = #1
  3120.     \@GenericHeadingIndent = #5
  3121.     \MaxVskip{#2}%
  3122.     \ifdim\leftskip = 0pt
  3123.     \else
  3124.         \message{\string\GenericHeading: \noexpand\leftskip
  3125.             is non-zero, forgotten to terminate a list?}%
  3126.     \fi
  3127.     \begingroup 
  3128.     \interlinepenalty = 10000
  3129.     \parindent = 0pt
  3130.     \parskip = 0pt
  3131.     \ifnum #4 = 1
  3132.         \hyphenpenalty = 10000
  3133.     \fi
  3134.     \ifnum #3 = 1
  3135.         \rightskip = 0pt plus 50pt
  3136.     \fi
  3137.     \@GenericHeading
  3138. \def\@GenericHeading #1#2#3#4#5#6#7{%
  3139.         #3%
  3140.         \def\LineBreakHeading{\hfil\break}%
  3141.         \def\LineBreakToc{ }%
  3142.         \ifdim #4 > 0pt
  3143.             \ifnum\@GenericHeadingIndent = 0
  3144.                 \hangindent = #4
  3145.                 \hangafter = 1
  3146.                 \leavevmode
  3147.                 \hbox to #4{#5\hfil}% 
  3148.             \else
  3149.                 \leavevmode
  3150.                 \hbox to #4{#5\hfil}% 
  3151.             \fi             
  3152.         \else
  3153.             \setbox0 = \hbox{#5\hskip -#4}
  3154.             \ifnum\@GenericHeadingIndent = 0
  3155.                 \hangindent = \wd0
  3156.                 \hangafter = 1
  3157.                 \leavevmode
  3158.                 \box0
  3159.             \else
  3160.                 \leavevmode
  3161.                 \box0
  3162.             \fi
  3163.         \fi
  3164.         #6% 
  3165.         \if\NameDefinedConditional{WriteToAuxSpecial}%
  3166.             \def\LineBreakToc{\hfil\break}%
  3167.             \def\LineBreakHeading{ }%
  3168.             \WriteToAuxSpecial{toc}{\the\@GenericHeadingCount}% 
  3169.                 {#5}{#7}{\PrintCounter{PageNo}}%
  3170.         \fi
  3171.         \par
  3172.     \endgroup
  3173.     \nobreak
  3174.     \vskip #1
  3175.     \ifnum #2 = 0
  3176.         \SuppressNextParIndent
  3177.     \fi
  3178. \catcode`\@ = 12
  3179. \NameDef{@InputD-genhead.tip}{}
  3180. \newcount\ResultNumberOfLines
  3181. \def\GetNumberOfLines #1#2{% 
  3182.     {% 
  3183.         \setbox 0 = \vbox{%
  3184.             \hsize = #2
  3185.             #1
  3186.             \par
  3187.             \global\ResultNumberOfLines = \prevgraf
  3188.         }%
  3189.     }% 
  3190. \NameDef{@InputD-getnuml.tip}{}
  3191. \def\GobbleOne  #1{}
  3192. \def\GobbleTwo  #1#2{}
  3193. \def\GobbleThree#1#2#3{}
  3194. \def\GobbleFour #1#2#3#4{}
  3195. \def\GobbleFive #1#2#3#4#5{}
  3196. \def\GobbleSix  #1#2#3#4#5#6{}
  3197. \def\GobbleSeven#1#2#3#4#5#6#7{}
  3198. \def\GobbleEight#1#2#3#4#5#6#7#8{}
  3199. \def\GobbleNine #1#2#3#4#5#6#7#8#9{}
  3200. \NameDef{@InputD-gobble.tip}{}
  3201. \catcode`\@ = 11
  3202. \newdimen\@ScaleLength
  3203. \def\SetScale #1{% 
  3204.     \@ScaleLength = #1
  3205. \SetScale{1mm}
  3206. \newdimen\@LineThickness
  3207. \def\SetLineThickness #1{%
  3208.     \@LineThickness = #1
  3209. \SetLineThickness{0.3mm}
  3210. \newbox\@GraphDataBox
  3211. \def\SetGraphDataBox #1{%
  3212.     \dimen0 = #1%
  3213.     \setbox\@GraphDataBox =
  3214.         \hbox{%
  3215.             \hskip -0.5\dimen0
  3216.             \vrule height 0.5\dimen0
  3217.                    depth  0.5\dimen0
  3218.                    width  1.0\dimen0
  3219.         }%
  3220.     \ZeroBox{\@GraphDataBox}%
  3221. \SetGraphDataBox{2mm}
  3222. \def\DrawDataBox (#1,#2){%
  3223.     {%
  3224.         \setbox0 = \hbox{%
  3225.             \hskip #1\@ScaleLength
  3226.             \raise #2\@ScaleLength\copy\@GraphDataBox
  3227.         }%
  3228.         \ZeroBoxOut{0}% 
  3229.     }% 
  3230. \def\DrawHLine (#1,#2)#3{%
  3231.     {%
  3232.         \setbox0 = \hbox{%
  3233.             \hskip #1\@ScaleLength
  3234.             \raise #2\@ScaleLength
  3235.                 \hbox{%
  3236.                     \vrule height 0.5\@LineThickness
  3237.                            depth  0.5\@LineThickness
  3238.                            width  #3\@ScaleLength
  3239.                 }% 
  3240.         }%
  3241.         \ZeroBoxOut{0}% 
  3242.     }% 
  3243. \def\DrawVLine (#1,#2)#3{%
  3244.     {%
  3245.         \setbox0 = \hbox{%
  3246.             \hskip #1\@ScaleLength
  3247.             \hskip -0.5\@LineThickness
  3248.             \raise #2\@ScaleLength
  3249.                 \hbox{%
  3250.                     \vrule height #3\@ScaleLength
  3251.                            depth  0pt
  3252.                            width  \@LineThickness
  3253.                 }% 
  3254.         }%
  3255.         \ZeroBoxOut{0}% 
  3256.     }% 
  3257. \catcode`\@ = 12
  3258. \NameDef{@InputD-graphmac.tip}{}
  3259. \def\Hex #1{%
  3260.     {%
  3261.         \count0 = #1%
  3262.         \count1 = #1%
  3263.         \divide\count0 by 16
  3264.         \count2 = \count0
  3265.         \multiply \count2 by -16
  3266.         \advance \count1 by \count2
  3267.         \ifnum \count0 > 0
  3268.             \Hex{\count0}%
  3269.         \fi
  3270.         \HexDigit{\count1}% 
  3271.     }%
  3272. \def\HexDigit #1{% 
  3273.     {%
  3274.         \count0 = #1\relax
  3275.         \ifnum \count0 < 10
  3276.             \number\count0          % or \the\count0
  3277.         \else
  3278.             \advance\count0 by -10
  3279.             \advance\count0 by `A
  3280.             \char\count0
  3281.         \fi
  3282.     }%
  3283. \NameDef{@InputD-hex.tip}{}
  3284. \newif\ifEvenConditionalResult
  3285. \def\EvenConditional #1{%
  3286.     TT\fi
  3287.     \ifodd #1\relax
  3288.         \EvenConditionalResultfalse
  3289.     \else
  3290.         \EvenConditionalResulttrue
  3291.     \fi
  3292.     \ifEvenConditionalResult
  3293. \NameDef{@InputD-ifeven.tip}{}
  3294. \catcode`\@ = 11
  3295. \newif\if@Def
  3296. \def\XDefinedConditional #1{% 
  3297.     TT\fi
  3298.     \ifx #1\@AlwaysUndefinedToken
  3299.         \@Deffalse
  3300.     \else
  3301.         \@Deftrue
  3302.     \fi
  3303.     \if@Def
  3304. \catcode`\@ = 12
  3305. \NameDef{@InputD-ifx-def.tip}{}
  3306. \catcode`\@ = 11
  3307. \def\IfXConditional #1#2{%
  3308.     TT\fi
  3309.     \def\@IfXConditionalOne{#1}%
  3310.     \def\@IfXConditionalTwo{#2}%
  3311.     \ifx\@IfXConditionalOne\@IfXConditionalTwo
  3312. \catcode`\@ = 12
  3313. \NameDef{@InputD-ifx-mac.tip}{}
  3314. \def\InputAt #1{% 
  3315.     \catcode`\@ = 11
  3316.     \input #1
  3317.     \catcode`\@ = 12
  3318. \NameDef{@InputD-input-at.tip}{}
  3319. \catcode`\@ = 11
  3320. \def\InputC #1{%
  3321.     \if\FileExistsConditional{#1}%
  3322.         \input #1
  3323.     \else
  3324.         \message{\string\InputC: there is no file "#1".}% 
  3325.     \fi
  3326. \def\InputCWithAt #1{%
  3327.     \catcode`@ = 11
  3328.     \InputC{#1}% 
  3329.     \catcode`@ = 12
  3330. \catcode`\@ = 12
  3331. \NameDef{@InputD-inputc.tip}{}
  3332. \catcode`\@ = 11
  3333. \def\ReverseString #1#2{% 
  3334.     \def\@ReverseStringName{#1}% 
  3335.     \def\@ReversedString{}% 
  3336.     \edef\@ReverseTemp{#2}%
  3337.     \ShowX\@ReverseTemp
  3338.     \expandafter\@ReverseString\@ReverseTemp\@Del
  3339. \def\@ReverseString #1{% 
  3340.     \ifx #1\@Del
  3341.         \expandafter\edef\@ReverseStringName{\@ReversedString}% 
  3342.         \let\@ReverseStringNext = \relax
  3343.     \else
  3344.         \edef\@ReversedString{#1\@ReversedString}% 
  3345.         \let\@ReverseStringNext = \@ReverseString
  3346.         \def\@ReverseStringNext{\@ReverseString}%
  3347.     \fi
  3348.     \@ReverseStringNext
  3349. \catcode`\@ = 12
  3350. \NameDef{@InputD-reverses.tip}{}
  3351. \catcode`\@ = 11
  3352. \def\SuffixConditional #1#2{% 
  3353.     TT\fi
  3354.     \ReverseString{\@MainSuffixString}{#1}% 
  3355.     \ReverseString{\@SuffixSuffixString}{#2}% 
  3356.     \if\PrefixConditional{\@MainSuffixString}{\@SuffixSuffixString}% 
  3357. \catcode`\@ = 12
  3358. \NameDef{@InputD-issuffix.tip}{}
  3359. \catcode`\@ = 11
  3360. \newcount\@ItemListDepth
  3361. \@ItemListDepth = 0
  3362. \def\BeginItemize{% 
  3363.     \begingroup
  3364.     \global\advance\@ItemListDepth by 1
  3365.     \ifcase\@ItemListDepth\or
  3366.         \@BeginItemizeLevelOne
  3367.         \def\Item{\ItemLL{$\bullet$}}%
  3368.     \or
  3369.         \@BeginItemizeLevelTwo
  3370.         \def\Item{\ItemLL{--}}%
  3371.     \or
  3372.         \@BeginItemizeLevelThree
  3373.         \def\Item{\ItemLL{*}}%
  3374.     \or
  3375.         \@BeginItemizeLevelFour
  3376.         \def\Item{\ItemLL{+}}%
  3377.     \else
  3378.         \errmessage{\string\BeginItemize: maximum nesting of
  3379.             4 exceeded.}%
  3380.     \fi
  3381. \def\EndItemize{% 
  3382.     \EndAList
  3383.     \endgroup
  3384.     \global\advance\@ItemListDepth by -1
  3385. \catcode`\@ = 12
  3386. \NameDef{@InputD-itemizel.tip}{}
  3387. \def\hang{% 
  3388.     \hangindent = \parindent
  3389. \def\item{%
  3390.     \par
  3391.     \hang
  3392.     \textindent
  3393. \def\itemitem{%
  3394.     \par
  3395.     \indent
  3396.     \hangindent = 2\parindent
  3397.     \textindent
  3398. \def\textindent #1{%
  3399.     \indent
  3400.     \llap{#1\enspace}%
  3401.     \ignorespaces
  3402. \def\itemitemitem{%
  3403.     \par
  3404.     \indent
  3405.     \indent
  3406.     \hangindent = 3\parindent
  3407.     \textindent
  3408. \NameDef{@InputD-itemplan.tip}{}
  3409. \catcode`\@ = 11
  3410. \def\WordsToTeXList #1#2\EndWordsToTeXList{%
  3411.     \def\@WordsToTeXListName{#1}%
  3412.     \expandafter\def\@WordsToTeXListName{}%
  3413.     \@WordsToTeXListNextName #2 \EndWordsToTeXList
  3414. \def\@WordsToTeXListNextName #1 {%
  3415.     \if\EmptyStringConditional{#1}% 
  3416.     \else
  3417.         \expandafter\RightAppendElement\@WordsToTeXListName{#1}%
  3418.     \fi
  3419.     \DoFutureLet{\ifx}{\EndWordsToTeXList}%
  3420.         {\@WordsToTeXListEnd}{\@WordsToTeXListNextName}%
  3421. \def\@WordsToTeXListEnd\EndWordsToTeXList{}
  3422. \catcode`\@ = 12
  3423. \NameDef{@InputD-wtolist.tip}{}
  3424. \catcode`\@ = 11
  3425. \newdimen\@MaximumCurrentLineWidth
  3426. \newdimen\@LineWidthLastLine
  3427. \newdimen\@LineWidthMinDiff
  3428. \newbox\@IPCurrentLineBox
  3429. \newbox\@IPCurrentLineBoxTry
  3430. \def\InvertedPyramid #1#2#3{%
  3431.     \WordsToTeXList{\IVList}#3\EndWordsToTeXList
  3432.     \def\LineLengthList{#1}%
  3433.     \@LineWidthLastLine = 0pt
  3434.     \@LineWidthMinDiff = #2
  3435.     \CarOfList{\IVList}{\@IVListTemp}
  3436.     \DropFirstElementOfList{\IVList}
  3437.     \setbox\@IPCurrentLineBox = \hbox{\@IVListTemp}%
  3438.     \CarOfList{\LineLengthList}{\@IVListTemp}% 
  3439.     \@MaximumCurrentLineWidth = \@IVListTemp
  3440.     \DropFirstElementOfList{\LineLengthList}%
  3441.     \ForEveryListElement{\IVList}{\@IVListTypeset}%
  3442.     \ifvoid\@IPCurrentLineBox
  3443.         \errmessage{\string\InvertedPyramid:
  3444.             empty \string\@IPCurrentLineBox}%
  3445.     \else
  3446.         \centerline{\box\@IPCurrentLineBox}%
  3447.     \fi
  3448. \def\@IVListTypeset #1{%
  3449.     \setbox\@IPCurrentLineBoxTry =
  3450.         \hbox{\copy\@IPCurrentLineBox \space#1}%
  3451.     \ifdim\wd\@IPCurrentLineBoxTry < \@MaximumCurrentLineWidth
  3452.         \setbox\@IPCurrentLineBox = \box\@IPCurrentLineBoxTry
  3453.     \else
  3454.         \@LineWidthLastLine = \wd\@IPCurrentLineBox
  3455.         \centerline{\box\@IPCurrentLineBox}%
  3456.         \setbox\@IPCurrentLineBox = \hbox{#1}%
  3457.         \CarOfList{\LineLengthList}{\@IVListTemp}% 
  3458.         \@MaximumCurrentLineWidth = \@IVListTemp
  3459.         \DropFirstElementOfList{\LineLengthList}%
  3460.         \dimen0 = \@LineWidthLastLine
  3461.         \advance\dimen0 by -\@MaximumCurrentLineWidth
  3462.         \ifdim\dimen0 < \@LineWidthMinDiff
  3463.             \@MaximumCurrentLineWidth = \@LineWidthLastLine
  3464.             \advance\@MaximumCurrentLineWidth by -\@LineWidthMinDiff
  3465.         \fi
  3466.     \fi
  3467. \catcode`\@ = 12
  3468. \NameDef{@InputD-ivpyr.tip}{}
  3469. \catcode`\@ = 11
  3470. \newcount\@ValueOfDecimalPosition
  3471. \newcount\@ValueOfDecimalPositionLoopCount
  3472. \def\ValueOfDecimalPosition #1#2#3{% 
  3473.     \CheckRange{#2}{0}{9}{\string\ValueOfDecimalPosition:
  3474.         \#2 must be in the range 0 .. 9}%
  3475.     \AbsoluteValue{#1}{\@ValueOfDecimalPosition}%
  3476.     \DoLoop{\@ValueOfDecimalPositionLoopCount}{1}{1}{#2}%
  3477.         {\global\divide\@ValueOfDecimalPosition by 10}%
  3478.     \IModN{\@ValueOfDecimalPosition}{10}{#3}%
  3479. \catcode`\@ = 12
  3480. \NameDef{@InputD-valdecpo.tip}{}
  3481. \catcode`\@ = 11
  3482. \newcount\@LargestDecimalPlaceCount
  3483. \def\LargestDecimalPlace #1#2{%
  3484.     \AbsoluteValue{#1}{\@LargestDecimalPlaceCount}%
  3485.     \wlog{We make progress}%
  3486.     #2 = 0
  3487.     \@LargestDecimalPlaceMore{#2}%
  3488. \def\@LargestDecimalPlaceMore #1{% 
  3489.     \wlog{One round: \the#1}%
  3490.     \ifnum\@LargestDecimalPlaceCount < 10
  3491.         \def\@LargestDecimalPlaceMoreNext{}%
  3492.     \else
  3493.         \advance #1 by 1
  3494.         \divide\@LargestDecimalPlaceCount by 10
  3495.         \def\@LargestDecimalPlaceMoreNext{%
  3496.             \@LargestDecimalPlaceMore{#1}%
  3497.         }%
  3498.     \fi
  3499.     \@LargestDecimalPlaceMoreNext
  3500. \catcode`\@ = 12
  3501. \NameDef{@InputD-largdp.tip}{}
  3502. \catcode`\@ = 11
  3503. \def\\{% 
  3504.     \hfil\break
  3505.     \hbox{}%
  3506.     \DoFutureLet{\ifx}{[}{\@HfilBreakHskip}{\ignorespaces}%
  3507. \def\@HfilBreakHskip [#1]{% 
  3508.     \hskip #1%
  3509.     \ignorespaces
  3510. \catcode`\@ = 12
  3511. \NameDef{@InputD-lbpar.tip}{}
  3512. \catcode`\@ = 11
  3513. \def\LoadCountZeroToNine #1#2#3#4#5#6#7#8#9{% 
  3514.     \count0 = #1\relax
  3515.     \count1 = #2\relax
  3516.     \count2 = #3\relax
  3517.     \count3 = #4\relax
  3518.     \count4 = #5\relax
  3519.     \count5 = #6\relax
  3520.     \count6 = #7\relax
  3521.     \count7 = #8\relax
  3522.     \count8 = #9\relax
  3523.     \@LoadCountNine
  3524. \def\@LoadCountNine #1{% 
  3525.     \count9 = #1\relax
  3526. \catcode`\@ = 12
  3527. \NameDef{@InputD-lc0to9.tip}{}
  3528. \def\RightLeaderLine #1{% 
  3529.     \line{\leaders\hrule\hss #1}% 
  3530. \def\LeftLeaderLine #1{% 
  3531.     \line{#1\leaders\hrule\hss}% 
  3532. \def\CenterLeaderLine #1{% 
  3533.     \line{\leaders\hrule\hss #1\leaders\hrule\hss}% 
  3534. \NameDef{@InputD-leadline.tip}{}
  3535. \def\LeftDisplay #1$${%
  3536.     \leftline{% 
  3537.         \hskip 20pt
  3538.         $
  3539.             \displaystyle {#1}
  3540.         $% 
  3541.         }%
  3542.     $$
  3543. \NameDef{@InputD-leftdm.tip}{}
  3544. \def\LoadFontOnDemand #1#2{%
  3545.     \def #1{% 
  3546.         \global\font#1 = #2\relax
  3547.         #1%
  3548.         \message{\string\LoadFontOnDemand: font \string#1
  3549.             (#2) loaded on demand.}% 
  3550.     }%
  3551. \NameDef{@InputD-lfondem.tip}{}
  3552. \catcode`\@ = 11
  3553. \newif\if@Defined
  3554. \def\DefinedConditional #1{%
  3555.     TT\fi
  3556.     \ifx\@UndefinedToken #1% 
  3557.         \@Definedfalse
  3558.     \else
  3559.         \@Definedtrue
  3560.     \fi
  3561.     \if@Defined
  3562. \catcode`\@ = 12
  3563. \NameDef{@InputD-testdef.tip}{}
  3564. \def\FormatIsLaTeXConditional{%
  3565.     TT\fi
  3566.     \if\DefinedConditional{\documentstyle}%
  3567. \NameDef{@InputD-loadedla.tip}{}
  3568. \def\BeginMath{%
  3569.     \ifmath
  3570.         \ifinner
  3571.             \errmessage{\string\BeginMath: already in math
  3572.                 mode, \string\BeginMath ignored.}%
  3573.         \else
  3574.             \errmessage{\string\BeginMath: in display math
  3575.                 mode, terminated and math mode started.}%
  3576.             $$
  3577.             $
  3578.         \fi
  3579.     \else
  3580.         $\relax
  3581.     \fi
  3582. \def\EndMath{%
  3583.     \ifmath
  3584.         \ifinner
  3585.             $%
  3586.         \else
  3587.             \errmessage{\string\EndMath: you are in display math
  3588.                 mode! Should have used \string\EndDisplayMath!}%
  3589.             $$
  3590.         \fi
  3591.     \else
  3592.         \errmessage{\string\EndMath: already in math
  3593.             mode, \string\EndMath ignored.}%
  3594.     \fi
  3595. \def\BeginDisplayMath{%
  3596.     \ifmath
  3597.         \ifinner
  3598.             \errmessage{\string\BeginDisplayMath: in inline
  3599.                 math mode, terminate it, start display math.}%
  3600.             $
  3601.             $$
  3602.         \else
  3603.             \errmessage{\string\BeginDisplayMath: already in math
  3604.                 mode, \string\BeginDisplayMath ignored.}%
  3605.         \fi
  3606.     \else
  3607.         $$
  3608.     \fi
  3609. \def\EndDisplayMath{%
  3610.     \ifmath
  3611.         \ifinner
  3612.             \errmessage{\string\EndDisplayMath: inline
  3613.                 math mode in effect, did you intend to
  3614.                 write \string\EndMath?}%
  3615.             $%
  3616.         \else
  3617.             $$
  3618.         \fi
  3619.     \else
  3620.         \errmessage{\string\EndDisplayMath: not in math
  3621.             mode, \string\EndDisplayMath ignored.}%
  3622.     \fi
  3623. \NameDef{@InputD-mathenv.tip}{}
  3624. \def\MaxDimen #1#2#3#4{% 
  3625.     \ifdim #2<#3\relax
  3626.         #4#1 = #3\relax
  3627.     \else
  3628.         #4#1 = #2\relax
  3629.     \fi
  3630. \def\MinDimen #1#2#3#4{% 
  3631.     \ifdim #2<#3\relax
  3632.         #4#1 = #2\relax
  3633.     \else
  3634.         #4#1 = #3\relax
  3635.     \fi
  3636. \NameDef{@InputD-maxmindi.tip}{}
  3637. \def\ModuloOneAdvanceNumCond #1#2{% 
  3638.     0=0\fi
  3639.     \global\advance #1 by 1
  3640.     \ifnum #1 = #2\relax
  3641.         \global #1 = 0
  3642.     \fi
  3643.     \ifnum #1%
  3644. \NameDef{@InputD-modonead.tip}{}
  3645. \def\MultiRowDel #1#2{% 
  3646.     {%
  3647.         \mathsurround = 0pt
  3648.         \setbox 0 = \hbox{% 
  3649.             $% 
  3650.                 \vcenter{% 
  3651.                     \hbox{% 
  3652.                         $
  3653.                             \left#1% 
  3654.                             \vrule height #2 depth #2 width 0pt
  3655.                             \right.
  3656.                         $%                          
  3657.                     }% 
  3658.                 }% 
  3659.             $% 
  3660.         }% 
  3661.         \ht0 = 0pt
  3662.         \dp0 = 0pt
  3663.         \box 0
  3664.     }% 
  3665. \def\MultiRowDel #1#2{% 
  3666.     {%
  3667.         \mathsurround = 0pt
  3668.         \setbox 0 = \hbox{% 
  3669.                         $
  3670.                             \left#1% 
  3671.                             \vrule height #2 depth #2 width 0pt
  3672.                             \right.
  3673.                         $%                          
  3674.                     }% 
  3675.         \ht0 = 0pt
  3676.         \dp0 = 0pt
  3677.         \box 0
  3678.     }% 
  3679. \NameDef{@InputD-mrdel.tip}{}
  3680. \catcode`\@ = 11
  3681. \newbox\@NBox
  3682. \def\NaturalHeight #1#2{% 
  3683.     \setbox\@NBox = \vbox{\unvcopy #2}
  3684.     #1 = \ht\@NBox
  3685. \def\NaturalDepth #1#2{% 
  3686.     \setbox\@NBox = \vbox{\unvcopy #2}
  3687.     #1 = \dp\@NBox
  3688. \catcode`\@ = 12
  3689. \NameDef{@InputD-nathd.tip}{}
  3690. \catcode`\@ = 11
  3691. \def\NextCharTest #1#2#3{% 
  3692.     \def\@NextCharTestYes #1{#2}%
  3693.     \def\@NextCharTestNo {#3}%
  3694.     \DoFutureLet{\ifx}{#1}{\@NextCharTestYes}{\@NextCharTestNo}%
  3695. \catcode`\@ = 12
  3696. \NameDef{@InputD-nctest.tip}{}
  3697. \catcode`\@ = 11
  3698. \def\pagecontents{% 
  3699.     \wlog{\noexpand\pagecontents from op-pagec.tip called.}%
  3700.     \NameUse{@ShowPlainLists}%
  3701.     \ifvoid\topins
  3702.         \wlog{\string\pagecontents: no topinserts.}%
  3703.         \if\NameDefinedConditional{@TopInsertSize}%
  3704.             \ifdim\@TopInsertSize < 20pt
  3705.                 \global\@TopInsertSize = 0pt
  3706.             \fi
  3707.         \fi
  3708.     \else
  3709.         \NameUse{ChangeBarPush}%
  3710.         \NameUse{@UpdateTopInsertSize}%
  3711.         \unvbox\topins
  3712.         \NameUse{ChangeBarPop}%
  3713.     \fi
  3714.     \dimen@ = \dp 255
  3715.     \unvbox 255
  3716.     \ifvoid\footins
  3717.     \else
  3718.         \@PrintFootnotePlain
  3719.     \fi
  3720.     \ifr@ggedbottom
  3721.         \kern -\dimen@
  3722.         \vfil
  3723.     \fi
  3724. \def\@PrintFootnotePlain{%
  3725.     \vskip\skip\footins
  3726.     \footnoterule
  3727.     \unvbox\footins
  3728. \catcode`\@ = 12
  3729. \NameDef{@InputD-op-pagec.tip}{}
  3730. \catcode`\@ = 11
  3731. \def\endinsert{% 
  3732.     \egroup
  3733.     \if@mid
  3734.         \dimen@ = \ht0
  3735.         \advance\dimen@ by \dp0
  3736.         \advance\dimen@ by 12pt
  3737.         \advance\dimen@ by \pagetotal
  3738.         \ifdim\dimen@ > \pagegoal
  3739.             \@midfalse
  3740.             \p@gefalse
  3741.         \fi
  3742.     \fi
  3743.     \NameUse{MidInsertFix}%
  3744.     \if@mid
  3745.         \bigskip
  3746.         \box 0
  3747.         \bigbreak
  3748.     \else
  3749.         \insert\topins{% 
  3750.             \penalty 100
  3751.             \splittopskip = 0pt
  3752.             \splitmaxdepth = \maxdimen
  3753.             \floatingpenalty = 0
  3754.             \ifp@ge
  3755.                 \dimen@ = \dp0
  3756.                 \vbox to \vsize{
  3757.                     \unvbox 0
  3758.                     \kern -\dimen@
  3759.                 }%
  3760.                 \NameUse{MidInsertFixPage}%
  3761.             \else
  3762.                 \NameUse{EndInsertTopInsFix}%
  3763.                 \NameUse{MidInsertFixTop}%
  3764.                 \box 0
  3765.                 \nobreak
  3766.                 \bigskip
  3767.             \fi
  3768.         }
  3769.     \fi
  3770.     \endgroup
  3771. \catcode`\@ = 12
  3772. \NameDef{@InputD-op-endin.tip}{}
  3773. \catcode`\@ = 11
  3774. \newdimen\@TopInsertSize
  3775. \@TopInsertSize = 0pt
  3776. \def\ReportTopInsertSize #1{%
  3777.     \wlog{\string\@TopInsertSize: "#1"}%
  3778.     \wlog{\EightSpaces The value of \noexpand\@TopInsertSize is
  3779.         \the\@TopInsertSize}%
  3780. \def\MidInsertFix{% 
  3781.     \ReportTopInsertSize{\string\MidInsertFix}%
  3782.     \ifdim\@TopInsertSize > 0pt
  3783.         \@midfalse
  3784.         \p@gefalse
  3785.     \fi
  3786. \def\MidInsertFixPage{%
  3787.     \ReportTopInsertSize{\string\MidInsertFixPage[1]}%
  3788.     \global\advance\@TopInsertSize by \vsize
  3789.     \ReportTopInsertSize{\string\MidInsertFixPage[2]}%
  3790. \def\MidInsertFixTop{%
  3791.     \ReportTopInsertSize{\string\MidInsertFixTop[1]}%
  3792.     \global\advance\@TopInsertSize by \ht0
  3793.     \global\advance\@TopInsertSize by \dp0
  3794.     \ReportTopInsertSize{\string\MidInsertFixTop[2]}%
  3795. \def\@UpdateTopInsertSize{%
  3796.     \ReportTopInsertSize{\string\@UpdateTopInsertSize[1]}%
  3797.     \global\advance\@TopInsertSize by -\ht\topins
  3798.     \global\advance\@TopInsertSize by -\dp\topins
  3799.     \ReportTopInsertSize{\string\@UpdateTopInsertSize[2]}%
  3800. \catcode`\@ = 12
  3801. \NameDef{@InputD-new-midi.tip}{}
  3802. \catcode`\@ = 11
  3803. \def\NewDef #1{%
  3804.     \ifx #1\@UndefinedToken
  3805.     \else
  3806.         \errhelp = {\string\NewDef:
  3807.             The name of the macro to be defined which you
  3808.             provided is already in use. Use \show to find out
  3809.             what the name is used for. The macro definition
  3810.             will nevertheless be executed.}%
  3811.         \errmessage{\string\NewDef: "\string#1" already defined.}%
  3812.     \fi
  3813.     \def #1%
  3814. \def\ReDef #1{%
  3815.     \ifx #1\@UndefinedToken
  3816.         \errhelp = {\string\ReDef:
  3817.             The name of the macro to be redefined which you
  3818.             provided has never been used before. The macro definition
  3819.             will nevertheless be executed. }%
  3820.         \errmessage{\string\ReDef: "\string#1" never defined
  3821.             before.}%
  3822.     \fi
  3823.     \def #1%
  3824. \catcode`\@ = 12
  3825. \NameDef{@InputD-newdef.tip}{}
  3826. \def\NewFont #1{% 
  3827.     \if\DefinedConditional{#1}% 
  3828.         \errmessage{\string\NewFont: intended font name
  3829.             "\string#1" already used.}
  3830.     \fi
  3831.     \font #1% 
  3832. \NameDef{@InputD-newfont.tip}{}
  3833. \catcode`\@ = 11
  3834. \let\@input = \input
  3835. \def\input{%
  3836.     \DoFutureLet{\ifx}{\bgroup}{\@InputA}{\@input}%
  3837. \def\@InputA #1{\@input #1}
  3838. \catcode`\@ = 12
  3839. \NameDef{@InputD-newinput.tip}{}
  3840. \def\NewPage{%
  3841.     \vfill
  3842.     \eject
  3843. \NameDef{@InputD-newpage.tip}{}
  3844. \def\NewLineMessage #1{%
  3845.     {%
  3846.         \newlinechar = `\|%
  3847.         \message{|#1}%
  3848.     }%
  3849. \NameDef{@InputD-nlm.tip}{}
  3850. \def\NewPageRightHand{% 
  3851.     \vfill\supereject
  3852.     \ifodd\count0
  3853.     \else
  3854.         \hbox{}
  3855.         \vfill\eject
  3856.     \fi
  3857. \def\ShouldBeRightHandPage{%
  3858.     \ifodd\count0
  3859.     \else
  3860.         \errmessage{\string\ShouldBeRightHandPage:
  3861.             current page number is \the\count0.
  3862.             Should be odd and NOT EVEN.}%
  3863.         \NewPageRightHand
  3864.     \fi
  3865. \def\NewPageLeftHand{%
  3866.     \vfill\supereject
  3867.     \ifodd\count0
  3868.         \hbox{}
  3869.         \vfill\eject
  3870.     \fi
  3871. \NameDef{@InputD-npright.tip}{}
  3872. \catcode`\@ = 11
  3873. \def\@OneDigitNumberText #1#2{%
  3874.     \ifcase #2\relax
  3875.         \ifnum #1=0
  3876.         \else
  3877.             zero%
  3878.         \fi
  3879.         \or
  3880.         one\or
  3881.         two\or
  3882.         three\or
  3883.         four\or
  3884.         five\or
  3885.         six\or
  3886.         seven\or
  3887.         eight\or
  3888.         nine% 
  3889.     \else
  3890.         \errmessage{\string\@OneDigitNumberText: number
  3891.             \number#2 out of range.}%
  3892.     \fi
  3893. \newcount\@NumberToConvert
  3894. \newcount\@NumberToConvertTwo
  3895. \newcount\@NumberToConvertAndFlag
  3896. \def\NumberToText #1{% 
  3897.     \@NumberToConvert = #1\relax    
  3898.     \ifnum\@NumberToConvert < 0
  3899.         minus
  3900.         \@NumberToConvert = -\@NumberToConvert
  3901.     \fi
  3902.     \CheckRange{\@NumberToConvert}{0}{999999}%
  3903.         {\string\NumberToText: numbers >= 1.000.000
  3904.             not handled.}%
  3905.     \@NumberToConvertAndFlag = 0
  3906.     \ifnum\@NumberToConvert > 999
  3907.         \@NumberToConvertTwo = \@NumberToConvert
  3908.         \divide\@NumberToConvert by 1000
  3909.         \@NumberToText
  3910.         \space thousand and
  3911.         \IModN{\@NumberToConvertTwo}{1000}{\@NumberToConvert}%
  3912.     \fi 
  3913.     \CheckRange{\@NumberToConvert}{0}{999}%
  3914.         {\string\NumberToText: internal error 1}%
  3915.     \@NumberToText
  3916. \newcount\@NumberToTextTmp
  3917. \def\@NumberToText{%
  3918.     \ifnum\@NumberToConvert > 99
  3919.         \ValueOfDecimalPosition{\@NumberToConvert}{2}% 
  3920.             {\@NumberToTextTmp}%
  3921.         \@OneDigitNumberText{1}{\@NumberToTextTmp}% 
  3922.         \space hundred and
  3923.         \IModN{\@NumberToConvert}{100}{\@NumberToConvert}%
  3924.     \fi
  3925.     \ValueOfDecimalPosition{\@NumberToConvert}{1}%
  3926.         {\@NumberToTextTmp}%
  3927.     \ifnum\@NumberToTextTmp > 1
  3928.         \ifcase\@NumberToTextTmp
  3929.                 \errmessage{\string\@NumberToText:
  3930.                     internal error 1.}%
  3931.             \or
  3932.                 \errmessage{\string\@NumberToText:
  3933.                     internal error 2.}%
  3934.             \or
  3935.             twenty\or
  3936.             thirty\or
  3937.             forty\or
  3938.             fifty\or
  3939.             sixty\or
  3940.             seventy\or
  3941.             eighty\or
  3942.             ninety%
  3943.         \else
  3944.             \errmessage{\string\@NumberToText:
  3945.                 internal error 4.}%
  3946.         \fi
  3947.         \IModN{\@NumberToConvert}{10}{\@NumberToTextTmp}%
  3948.             \@OneDigitNumberText{0}{\@NumberToTextTmp}%
  3949.     \else
  3950.         \ifnum\@NumberToTextTmp = 1
  3951.             \advance\@NumberToConvert by -10
  3952.             \ifcase\@NumberToConvert
  3953.                 ten\or
  3954.                 eleven\or
  3955.                 twelve\or
  3956.                 thirteen\or
  3957.                 fourteen\or
  3958.                 fifteen\or
  3959.                 sixteen\or
  3960.                 seventeen\or
  3961.                 eighteen\or
  3962.                 nineteen%
  3963.             \fi
  3964.         \else
  3965.             \@OneDigitNumberText{1}{\@NumberToConvert}%
  3966.         \fi
  3967.     \fi
  3968. \catcode`\@ = 12
  3969. \NameDef{@InputD-ntotext.tip}{}
  3970. \catcode`\@ = 11
  3971. \newcount\@NumberConditionalCounter
  3972. \def\@NumberConditional #1#2;{%
  3973.     \@NumberConditionalCounter = `#1\relax
  3974. \def\NumberConditional #1{%
  3975.     TT\fi
  3976.     \edef\@NumberConditionalString{#1}%
  3977.     \expandafter\@NumberConditional\@NumberConditionalString ;
  3978.     \if\InRangeConditional{\@NumberConditionalCounter}{`\0}{`\9}%
  3979. \catcode`\@ = 12
  3980. \NameDef{@InputD-numcond.tip}{}
  3981. \catcode`\@ = 11
  3982. \newcount\@WhileNesting
  3983. \@WhileNesting = 0
  3984. \def\WhileNum #1#2{%
  3985.     \global\advance\@WhileNesting by 1
  3986.     \edef\@WhileArgOne{{\the\@WhileNesting}}%
  3987.     \expandafter\@WhileNum\@WhileArgOne{#1}{#2}%
  3988.     \global\advance\@WhileNesting by -1
  3989. \def\@WhileNum #1#2#3{%
  3990.     \ifnum #2\relax
  3991.         #3\relax
  3992.         \NameDef{@WhileNum-#1}{\@WhileNum{#1}{#2}{#3}}% 
  3993.     \else
  3994.         \NameDef{@WhileNum-#1}{}%
  3995.     \fi
  3996.     \NameUse{@WhileNum-#1}{}%
  3997. \catcode`\@ = 12
  3998. \NameDef{@InputD-numwhile.tip}{}
  3999. \catcode`\@ = 11
  4000. \def\ObeyLines{% 
  4001.     \catcode`\^^M = \active
  4002.     \@EnableActiveEndOfLine
  4003.     \catcode`\^^M=\active           % Lines must end with '%'.
  4004.     \gdef\@EnableActiveEndOfLine{%
  4005.         \def
  4006.         {\leavevmode\par}% 
  4007.     }%
  4008. \catcode`\@ = 12
  4009. \NameDef{@InputD-oblines.tip}{}
  4010. \catcode`\@ = 11
  4011. \def\ObeySpaces{% 
  4012.     \catcode`\ = \active
  4013.     \@InitActiveSpace
  4014. {\catcode`\ = \active
  4015. \gdef\@InitActiveSpace{\edef {\VerbControlSpace}}}
  4016. \catcode`\@ = 12
  4017. \NameDef{@InputD-obspaces.tip}{}
  4018. \def\Oct #1{%
  4019.     {%
  4020.         \count4 = #1%
  4021.         \count0 = \count4
  4022.         \divide\count0 by 8
  4023.         \ifnum \count0 > 0
  4024.             \Oct{\count0}% 
  4025.         \fi
  4026.         \count2 = \count0
  4027.         \multiply \count2 by -8
  4028.         \advance \count4 by \count2
  4029.         \the\count4
  4030.     }% 
  4031. \NameDef{@InputD-oct.tip}{}
  4032. \def\PrintOdd #1{% 
  4033.     \ifodd #1\relax
  4034.         Number #1 is odd.
  4035.     \fi
  4036. \NameDef{@InputD-oddprin.tip}{}
  4037. \def\PrintOddEven #1{% 
  4038.     \ifodd #1\relax
  4039.         The number #1 is odd.
  4040.     \else
  4041.         The number #1 is even.
  4042.     \fi
  4043. \NameDef{@InputD-oeprin.tip}{}
  4044. \catcode`\@ = 11
  4045. \def\OptArgX #1#2{% 
  4046.     \let\@OptArgXTemp = #1%
  4047.     \def\@OptArgXDefault{[#2]}%
  4048.     \DoLongFutureLet{\ifx}{[}{\@OptArgXTemp}{\@OptArgXB}%
  4049. \def\@OptArgXB{\expandafter\@OptArgXTemp\@OptArgXDefault}
  4050. \catcode`\@ = 12
  4051. \NameDef{@InputD-optargx.tip}{}
  4052. \def\ParFl #1#2\par{%
  4053.     \par
  4054.     $$
  4055.         \vbox{
  4056.             \setbox 0 = \hbox{#1}
  4057.             \hsize = \wd0
  4058.             \noindent
  4059.             \unhbox 0
  4060.             \space
  4061.             #2
  4062.         }
  4063.     $$
  4064.     \par
  4065. \NameDef{@InputD-par-fl.tip}{}
  4066. \def\PickFirstOfTwo #1#2{#1}
  4067. \def\PickSecondOfTwo #1#2{#2}
  4068. \NameDef{@InputD-pickfs.tip}{}
  4069. \catcode`\@ = 11
  4070. \newif\if@LabelsOk
  4071. \def\@LabelRefPrefix{@REF-}
  4072. \def\@LabelIsDefined #1{%
  4073.     TT\fi
  4074.     \if\NameDefinedConditional{\@LabelRefPrefix#1}%
  4075. \def\@NewLabel #1#2#3{% 
  4076.     \if\@LabelIsDefined{#1}%
  4077.         \wlog{\string\@NewLabel: warning: label "#1"
  4078.             already defined.}%
  4079.     \fi
  4080.     \NameGdef{\@LabelRefPrefix #1}{{#2}{#3}}% 
  4081. \let\Saved@NewLabel = \@NewLabel
  4082. \def\Ref #1{% 
  4083.     \@ref{0}{#1}%
  4084.     \if\StringsEqualConditional{\@TheExpandedLabel}{??}%
  4085.         {??}%
  4086.     \else
  4087.         \@TheExpandedLabel
  4088.     \fi
  4089.     \@PrintAfterLabel
  4090. \def\PageRef #1{% 
  4091.     \@ref{1}{#1}%
  4092.     \if\StringsEqualConditional{\@TheExpandedLabel}{??}%
  4093.         {??}%
  4094.     \else
  4095.         \@TheExpandedLabel
  4096.     \fi
  4097.     \@PrintAfterLabel
  4098. \def\@MostRecentLabel{}
  4099. \def\@ref #1#2{%
  4100.     \xdef\@PrintAfterLabel{}%
  4101.     \DefaultArg{\@ThisLabel}{#2}{\@MostRecentLabel}% 
  4102.     \if\StringsEqualConditional{\@ThisLabel}{.}% 
  4103.         \xdef\@ThisLabel{\@MostRecentLabel}%
  4104.         \xdef\@PrintAfterLabel{.}%
  4105.     \fi
  4106.     \if\StringsEqualConditional{\@ThisLabel}{,}% 
  4107.         \xdef\@ThisLabel{\@MostRecentLabel}%
  4108.         \xdef\@PrintAfterLabel{,}%
  4109.     \fi
  4110.     \if\StringsEqualConditional{\@ThisLabel}{)}% 
  4111.         \xdef\@ThisLabel{\@MostRecentLabel}%
  4112.         \xdef\@PrintAfterLabel{)}%
  4113.     \fi
  4114.     \if\StringsEqualConditional{\@ThisLabel}{;}%
  4115.         \xdef\@ThisLabel{\@MostRecentLabel}%
  4116.         \xdef\@PrintAfterLabel{;}%
  4117.     \fi
  4118.     \xdef\@MostRecentLabel{\@ThisLabel}% 
  4119.     \if\@LabelIsDefined{\@ThisLabel}%
  4120.         \edef\@CrefTemp{\NameUse{\@LabelRefPrefix\@ThisLabel}}%
  4121.         \ifcase #1\relax 
  4122.             \edef\@TheExpandedLabel{%
  4123.                 \expandafter\PickFirstOfTwo\@CrefTemp}%
  4124.         \or
  4125.             \edef\@TheExpandedLabel{%
  4126.                 \expandafter\PickSecondOfTwo\@CrefTemp}%
  4127.         \fi
  4128.     \else
  4129.         \def\@TheExpandedLabel{??}
  4130.         \wlog{\string\@ref: Label \@ThisLabel\space undefined.}%
  4131.     \fi
  4132. \catcode`\@ = 12
  4133. \NameDef{@InputD-part-cr.tip}{}
  4134. \def\PrintInDollar #1{%
  4135.     {%
  4136.         \ifnum #1 < 0
  4137.             $-$%
  4138.             \count0 = -#1\relax
  4139.         \else
  4140.             \count0 = #1\relax
  4141.         \fi
  4142.         \count2 = \count0
  4143.         \divide\count0 by 100
  4144.         \the\count0.%
  4145.         \multiply\count0 by 100
  4146.         \advance\count2 by -\count0
  4147.         \ifnum\count2 < 10
  4148.             0%
  4149.         \fi
  4150.         \the\count2
  4151.     }%
  4152. \NameDef{@InputD-pdollars.tip}{}
  4153. \catcode`\@ = 11
  4154. \def\PartSourceFileNameExtension{tex}
  4155. \def\AuxFileNameExtension{aux}
  4156. \def\TocFileNameExtension{toc}
  4157. \def\LofFileNameExtension{lof}
  4158. \def\LotFileNameExtension{lot}
  4159. \def\TmpFileNameExtension{tmp}
  4160. \newwrite\@PartAuxStream
  4161. \newwrite\@TmpFileStream
  4162. \def\i@write{\immediate\write}
  4163. \def\i@openout{\immediate\openout}
  4164. \def\i@closeout{\immediate\closeout}
  4165. \def\@ip@write{\i@write\@PartAuxStream}
  4166. \def\@p@write{\write\@PartAuxStream}
  4167. \def\@IgnoreAuxStuff{%
  4168.     \let\@NewLabel = \GobbleThree
  4169.     \let\@SetCounter = \GobbleTwo
  4170.     \let\@ForSpecialFile = \GobbleFive
  4171. \def\@ReadInAuxFiles{% 
  4172.     {%
  4173.         \def\\##1{\InputCWithAt{##1.aux}}%
  4174.         \@AllPartsOfDocumentList
  4175.     }%
  4176. \catcode`\@ = 12
  4177. \NameDef{@InputD-pm-bas.tip}{}
  4178. \catcode`\@ = 11
  4179. \def\WriteAuxFileComment #1{%
  4180.     \@p@write{\PercentSignPure\space #1.}%
  4181. \catcode`\@ = 12
  4182. \NameDef{@InputD-pm-auxco.tip}{}
  4183. \catcode`\@ = 11
  4184. \NewCounter{PageNo}{\arabic}{\TheCounter{PageNo}}% 
  4185.     {\TheCounter{PageNo}}
  4186. \NewCounter{SWPageNo}{\arabic}%
  4187.     {\TheCounter{SWPageNo}}{\TheCounter{SWPageNo}}
  4188. \def\@PageNumbersToCounterRegs{%
  4189.     \CounterToRegister{\global\pageno}{PageNo}%
  4190. \SetCounter{PageNo}{1}
  4191. \@PageNumbersToCounterRegs
  4192. \def\advancepageno{%
  4193.     \StepCounter{PageNo}%
  4194.     \StepCounter{SWPageNo}%
  4195.     \@PageNumbersToCounterRegs
  4196. \def\folio{% 
  4197.     \PrintCounter{PageNo}% 
  4198. \catcode`\@ = 12
  4199. \NameDef{@InputD-pm-pagen.tip}{}
  4200. \catcode`\@ = 11
  4201. \def\WriteCountersToAuxFile{%
  4202.     \@WriteCounter{ChapterNo}% 
  4203.     \@WriteCounter{SectionNo}%
  4204.     \@WriteCounter{PageNo}%
  4205. \def\@WriteCounter #1{% 
  4206.     \@ip@write{% 
  4207.         \noexpand\@SetCounter
  4208.         {#1}% 
  4209.         {\expandafter\the\csname @C-#1\endcsname}}% 
  4210. \catcode`\@ = 12
  4211. \NameDef{@InputD-pm-wrc.tip}{}
  4212. \def\BoldfaceFake #1#2{%
  4213.     \hbox{%
  4214.         \hbox to #2{#1\hss}%
  4215.         \hbox to #2{#1\hss}%
  4216.         \hbox {#1}%     % Last time print text with reg. width.
  4217.     }%
  4218. \NameDef{@InputD-poorbold.tip}{}
  4219. \def\PrintAlph #1{%
  4220.     {%
  4221.         \count0 = #1%
  4222.         \advance\count0 by -1
  4223.         \advance\count0 by `\a
  4224.         \char\count0
  4225.     }%
  4226. \NameDef{@InputD-pralph.tip}{}
  4227. \def\ShowBoxAll #1{% 
  4228.     {% 
  4229.         \nonstopmode
  4230.         \showboxdepth = 10000
  4231.         \showboxbreadth = 10000
  4232.         \showbox #1%
  4233.     }%
  4234. \def\ShowBoxDepthOne #1{% 
  4235.     {% 
  4236.         \nonstopmode
  4237.         \showboxdepth = 1
  4238.         \showboxbreadth = 10000
  4239.         \showbox #1%
  4240.     }%
  4241. \def\ShowBoxDepthTwo #1{% 
  4242.     {% 
  4243.         \nonstopmode
  4244.         \showboxdepth = 2
  4245.         \showboxbreadth = 10000
  4246.         \showbox #1%
  4247.     }%
  4248. \NameDef{@InputD-shboxes.tip}{}
  4249. \def\PrintHyphens #1{%
  4250.     {%
  4251.         \setbox 0 = \vbox{%
  4252.             \pretolerance = -1
  4253.             \hyphenpenalty = -10000
  4254.             \hsize = 0pt
  4255.             \leftskip = 0pt
  4256.             \rightskip = 0pt
  4257.             \parfillskip = 0pt
  4258.             \parindent = 0pt
  4259.             \hfuzz = \maxdimen
  4260.             \interlinepenalty = 0
  4261.             \clubpenalty = 0
  4262.             \widowpenalty = 0
  4263.             \brokenpenalty = 0
  4264.             \hskip 0pt
  4265.             #1
  4266.         }% 
  4267.         \setbox2 = \hbox{}%
  4268.         \setbox 9 = \vbox{% 
  4269.             \unvbox 0
  4270.             \loop
  4271.                 \unskip
  4272.                 \setbox 1 = \lastbox
  4273.                 \ifhbox 1
  4274.                     \global\setbox 2 = \hbox{% 
  4275.                         \unhbox 1
  4276.                         \discretionary{}{}{}% 
  4277.                         \unhbox 2
  4278.                     }% 
  4279.             \repeat
  4280.         }%
  4281.         \unhbox 2
  4282.     }%
  4283. \NameDef{@InputD-prhyph.tip}{}
  4284. \def\PrimitiveMarker{% 
  4285.     \leavevmode
  4286.     {%
  4287.         \footnotesize\tt
  4288.         \llap{*}%
  4289.     }%
  4290. \NameDef{@InputD-primmark.tip}{}
  4291. \newcount\AstCount
  4292. \def\PrintAsterisk #1{% 
  4293.     \AstCount = #1
  4294.     \ifnum\AstCount < 0
  4295.         \errmessage{\string\PrintAsterisk: negative counter.}%
  4296.         \AstCount = 0
  4297.     \fi
  4298.     \PrintAsteriskRec
  4299. \def\PrintAsteriskRec{% 
  4300.     *%
  4301.     \advance\AstCount by -1
  4302.     \ifnum\AstCount = 0
  4303.         \let\next = \relax
  4304.     \else
  4305.         \let\next = \PrintAsteriskRec
  4306.     \fi
  4307.     \next
  4308. \NameDef{@InputD-printast.tip}{}
  4309. \def\PrintRegister #1{% 
  4310.     The current value of {\tt\string #1} is \the#1.% 
  4311. \def\LogRegister #1{% 
  4312.     \message{The current value of \string#1 is \the#1.}
  4313. \NameDef{@InputD-printreg.tip}{}
  4314. \def\PrintMode{%
  4315.     \ifinner
  4316.         \ifvmode \message{Current mode: inner vertical}\fi
  4317.         \ifhmode \message{Current mode: restricted horizontal}\fi
  4318.         \ifmmode \message{Current mode: (inline) math}\fi
  4319.     \else
  4320.         \ifvmode \message{Current mode: (regular) vertical}\fi
  4321.         \ifhmode \message{Current mode: (regular) horizontal}\fi
  4322.         \ifmmode \message{Current mode: display math}\fi
  4323.     \fi
  4324. \NameDef{@InputD-prmode.tip}{}
  4325. \catcode`\@ = 11
  4326. \newif\ifProtWrite
  4327. \ProtWritetrue
  4328. \newcount\@ProtCount
  4329. \newcount\@ProtCountX
  4330. \newwrite\@ProtWrite
  4331. \def\InitProtWrite{% 
  4332.     \ifProtWrite
  4333.         \immediate\openout\@ProtWrite = \jobname.prt
  4334.     \fi
  4335. \def\CloseProtWrite{% 
  4336.     \immediate\closeout\@ProtWrite
  4337. \def\WriteProtocol #1#2{%
  4338.     \ifProtWrite
  4339.         {% 
  4340.             \@ProtCount = #1\relax
  4341.             \def\@WriteSpace{}%
  4342.             \DoLoop{\count1}{1}{1}{\@ProtCount}% 
  4343.                 {\edef\@WriteSpace{\@WriteSpace\FourSpaces}}%
  4344.             \immediate\write\@ProtWrite{\@WriteSpace #2}%
  4345.         }%
  4346.     \fi
  4347. \def\BoxToProtocol #1#2#3{% 
  4348.     \ifProtWrite
  4349.         {%
  4350.             \WriteProtocol {#1}{\string\BoxToProtocol: #3}%
  4351.             \@ProtCountX = #1\relax
  4352.             \advance\@ProtCountX by 1
  4353.             \ifvoid #2%
  4354.                 \WriteProtocol{\@ProtCountX}{Box register #2
  4355.                     is void.}%
  4356.             \else
  4357.                 \ifhbox #2%
  4358.                     \WriteProtocol{\@ProtCountX}{Box register #2
  4359.                         is an hbox.}%
  4360.                 \else
  4361.                     \WriteProtocol{\@ProtCountX}{Box register #2
  4362.                         is a vbox.}%
  4363.                 \fi
  4364.             \fi
  4365.             \ifvoid #2%
  4366.             \else
  4367.                 \WriteProtocol{\@ProtCountX}% 
  4368.                     {Dimensions: (\the\ht#2+\the\dp#2)*\the\wd#2.}%
  4369.             \fi
  4370.         }%
  4371.     \fi
  4372. \catcode`\@ = 12
  4373. \NameDef{@InputD-prot.tip}{}
  4374. \def\ReportBoxType #1{%
  4375.     \message{\string\ReportBoxType: }%
  4376.     \ifvoid #1\message{Box register #1 is void.}\fi
  4377.     \ifhbox #1\message{Box register #1 contains a horizontal box.}\fi
  4378.     \ifvbox #1\message{Box register #1 contains a vertical box.}\fi
  4379. \NameDef{@InputD-rboxt.tip}{}
  4380. \catcode`\@ = 11
  4381. \newread\@ReadNumberStream
  4382. \newcount\ReadANumberResult
  4383. \def\InitReadNumbers #1{% 
  4384.     \openin\@ReadNumberStream = #1
  4385. \def\@ReadANumberPar{\par}
  4386. \def\ReadANumber{% 
  4387.     \ifeof\@ReadNumberStream
  4388.         \ReadANumberResult = -1
  4389.     \else
  4390.         \read\@ReadNumberStream to \@ReadANumberTemp
  4391.         \ifx\@ReadANumberTemp\@ReadANumberPar
  4392.             \ReadANumberResult = -1
  4393.         \else
  4394.             \ReadANumberResult = \@ReadANumberTemp
  4395.         \fi
  4396.     \fi
  4397. \catcode`\@ = 12
  4398. \NameDef{@InputD-readnu.tip}{}
  4399. \catcode`\@ = 11
  4400. \newbox\@ReduceToStrutBox
  4401. \def\ReduceToStrut #1{% 
  4402.     \setbox\@ReduceToStrutBox = \hbox{#1}%
  4403.     \vrule height \ht\@ReduceToStrutBox
  4404.            depth  \dp\@ReduceToStrutBox
  4405.            width 0pt
  4406. \catcode`\@ = 12
  4407. \NameDef{@InputD-redtost.tip}{}
  4408. \catcode`\@ = 11
  4409. \def\MakeRobust{}
  4410. \def\TreatAsRobust #1{%
  4411.     \def #1{%
  4412.         \noexpand #1% 
  4413.     }%
  4414. \newtoks\@RobustTokenList
  4415. \@RobustTokenList = {}
  4416. \def\AddToRobustList #1{%
  4417.     \@RobustTokenList = \expandafter{\the\@RobustTokenList #1}% 
  4418. \def\Robusting{%
  4419.     \ForEachToken{\@RobustTokenList}{\TreatAsRobust}%
  4420. \catcode`\@ = 12
  4421. \NameDef{@InputD-robust.tip}{}
  4422. \catcode`\@ = 11
  4423. \newcount\@SampleParCounter
  4424. \newcount\@SampleParSentenceCounter
  4425. \@SampleParCounter = 1
  4426. \def\SamplePar #1#2{%
  4427.     \@SampleParSentenceCounter = 0
  4428.     Identification of this paragraph: {\it #1}.
  4429.     {\it Sample paragraph~\the\@SampleParCounter,
  4430.     with~#2 sentences}. So here we go,
  4431.     and when you check the number of sentences, then note
  4432.     that these first two sentences do {\it not\/} count.
  4433.     \loop
  4434.         \advance\@SampleParSentenceCounter by 1
  4435.         This is one of the many sentences this macro
  4436.         generates, to be more specific it is sentence
  4437.         number~\the\@SampleParSentenceCounter\space of~#2.
  4438.         \ifnum\@SampleParSentenceCounter < #2
  4439.     \repeat
  4440.     \par
  4441.     \global\advance\@SampleParCounter by 1
  4442. \catcode`\@ = 12
  4443. \NameDef{@InputD-samplepa.tip}{}
  4444. \catcode`\@ = 11
  4445. \newdimen\@StrutBaseDimension
  4446. \newdimen\@StrutSkipTemp
  4447. \def\ComputeStrut{%
  4448.     \@StrutBaseDimension = \baselineskip
  4449.     \ifdim\baselineskip < 0pt
  4450.         \errhelp = {You probably called \string\offinterlineskip
  4451.                 before \string\ComputeStrut}
  4452.         \errmessage{\string\ComputeStrut: negative
  4453.                 \string\baselineskip (\the\baselineskip)}% 
  4454.     \fi
  4455. \def\MyStrut{% 
  4456.     \vrule height 0.7\@StrutBaseDimension
  4457.            depth 0.3\@StrutBaseDimension
  4458.            width 0pt
  4459. \def\HigherStrut #1{% 
  4460.     \@StrutSkipTemp = 0.7\@StrutBaseDimension
  4461.     \advance\@StrutSkipTemp by #1% 
  4462.     \vrule height \@StrutSkipTemp
  4463.            depth 0.3\@StrutBaseDimension
  4464.            width 0pt
  4465. \def\DeeperStrut #1{% 
  4466.     \@StrutSkipTemp = 0.3\@StrutBaseDimension
  4467.     \advance\@StrutSkipTemp by #1% 
  4468.     \vrule height 0.7\@StrutBaseDimension
  4469.            depth \@StrutSkipTemp
  4470.            width 0pt
  4471. \ComputeStrut
  4472. \catcode`\@ = 12
  4473. \NameDef{@InputD-setstrut.tip}{}
  4474. \def\ShiftRefPointUpOrDown #1#2{%
  4475.     \AdvanceBoxDimension{\ht#1}{#2}%
  4476.     \ifdim\ht#1 < 0pt
  4477.         \ht#1 = 0pt
  4478.     \fi
  4479.     \AdvanceBoxDimension{\dp#1}{-#2}%
  4480.     \ifdim\dp#1 < 0pt
  4481.         \dp#1 = 0pt
  4482.     \fi
  4483. \NameDef{@InputD-shiftudb.tip}{}
  4484. \catcode`\@ = 11
  4485. \newif\ifShowPlainLists
  4486. \ShowPlainListsfalse
  4487. \def\@ShowPlainLists{%
  4488.     \ifShowPlainLists
  4489.         \wlog{*** \string\@ShowPlainLists: main vertical list ***}%
  4490.         \wlog{*** Page number (\string\count0): \the\count0
  4491.                 \space***}%
  4492.         \ShowBoxDepthOne{255}%
  4493.         \ifvoid\footins
  4494.             \wlog{\string\@ShowPlainLists: no footnotes.}% 
  4495.         \else
  4496.             \wlog{*** \string\@ShowPlainLists: footnote box ***}%
  4497.             \ShowBoxDepthOne{\footins}%
  4498.         \fi
  4499.         \ifvoid\topins
  4500.             \wlog{\string\@ShowPlainLists: no topinserts.}% 
  4501.         \else
  4502.             \wlog{*** \string\@ShowPlainLists: top inserts ***}%
  4503.             \ShowBoxDepthTwo{\topins}%
  4504.         \fi
  4505.         \wlog{*** \string\@ShowPlainLists: end dump of
  4506.             page: \the\count0 \space ***}%
  4507.     \fi
  4508. \catcode`\@ = 12
  4509. \NameDef{@InputD-showpll.tip}{}
  4510. \def\SignatureLine #1#2{% 
  4511.     \hbox{%
  4512.         \hbox to 0pt{% 
  4513.             \vrule width #1 height 0.6pt depth 0pt
  4514.             \hss        % Equivalent to \hskip -#1.
  4515.         }% 
  4516.         \lower 10pt \hbox to #1{\hfil #2\hfil}% 
  4517.     }% 
  4518. \NameDef{@InputD-sigline.tip}{}
  4519. \catcode`\@ = 11
  4520. \def\SaveSpaceFactor{% 
  4521.     \xdef\@SavedSpaceFactor{%
  4522.         \spacefactor = \the\spacefactor
  4523.     }%
  4524. \def\RestoreSpaceFactor{%
  4525.     \@SavedSpaceFactor
  4526. \catcode`\@ = 12
  4527. \NameDef{@InputD-spacefac.tip}{}
  4528. \catcode`\@ = 11
  4529. \newcount\@PPLineNumber
  4530. \newbox\@PrintParWithLinesBox
  4531. \newbox\@PrintParWithLinesTemp
  4532. \def\PrintParWithLineNumbers #1{%
  4533.     \par
  4534.     \@PPLineNumber = 1
  4535.     \splittopskip = 0.6666\baselineskip
  4536.     \setbox\@PrintParWithLinesBox = \vbox{#1}
  4537.     \@PrintParWithLineNumbers
  4538. \def\@PrintParWithLineNumbers{
  4539.     \ifvoid\@PrintParWithLinesBox
  4540.         \let\@PPNext = \relax
  4541.     \else
  4542.         \setbox\@PrintParWithLinesTemp =
  4543.             \vsplit\@PrintParWithLinesBox to 0.666\baselineskip
  4544.         \hbox{%
  4545.             \llap{% 
  4546.                 \the\@PPLineNumber:% 
  4547.                 \hskip 10pt
  4548.             }% 
  4549.             \box \@PrintParWithLinesTemp
  4550.         }% 
  4551.         \advance\@PPLineNumber by 1
  4552.         \wlog{Line \the\@PPLineNumber}%
  4553.         \let\@PPNext = \@PrintParWithLineNumbers
  4554.     \fi
  4555.     \@PPNext
  4556. \catcode`\@ = 12
  4557. \NameDef{@InputD-splitpar.tip}{}
  4558. \def\SameSizeMath{
  4559.     \textfont0 = \tenrm
  4560.     \scriptfont0 = \tenrm
  4561.     \scriptscriptfont0 = \tenrm
  4562.     \textfont1 = \tenit
  4563.     \scriptfont1 = \tenit
  4564.     \scriptscriptfont1 = \tenit
  4565.     \textfont2 = \tensy
  4566.     \scriptfont2 = \tensy
  4567.     \scriptscriptfont2 = \tensy
  4568.     \textfont3 = \tenex
  4569.     \scriptfont3 = \tenex
  4570.     \scriptscriptfont3 = \tenex
  4571.     \textfont\itfam = \tenit
  4572.     \textfont\slfam = \tensl
  4573.     \textfont\bffam = \tenbf
  4574.     \scriptfont\bffam = \tenbf
  4575.     \scriptscriptfont\bffam = \tenbf
  4576.     \textfont\ttfam = \tentt
  4577. \NameDef{@InputD-ssmath.tip}{}
  4578. \catcode`\@ = 11
  4579. \newcount\@StringSwitchMatchCount
  4580. \def\StringSwitch #1#2{%
  4581.     \edef\@StringSwitchMasterString{#1}%
  4582.     \if\EmptyStringConditional{#1}%
  4583.         \errmessage{\string\StringSwitch: master string
  4584.             must not be the empty string.}%
  4585.     \fi
  4586.     \def\@StringSwitchMatchCommonCode{#2}%
  4587.     \@StringSwitchMatchCount = 0
  4588.     \@StringSwitch  
  4589. \def\@StringSwitchOne #1#2{%
  4590.     \def\@StringSwitchString{#1}%
  4591.     \def\@StringSwitchAction{#2}%
  4592. \def\@StringSwitch #1{%
  4593.     \@StringSwitchOne #1%
  4594.     \if\EmptyStringConditional{\@StringSwitchString}%
  4595.         \ifcase\@StringSwitchMatchCount
  4596.             \@StringSwitchAction
  4597.         \or
  4598.         \else
  4599.             \errmessage{\string\StringSwitch: double match.}%
  4600.         \fi
  4601.         \def\@StringSwitchNext{}%
  4602.     \else
  4603.         \if\StringsEqualConditional{\@StringSwitchMasterString}%
  4604.             {\@StringSwitchString}%
  4605.             \advance\@StringSwitchMatchCount by 1
  4606.             \@StringSwitchMatchCommonCode
  4607.             \@StringSwitchAction
  4608.         \fi
  4609.         \def\@StringSwitchNext{\@StringSwitch}%
  4610.     \fi 
  4611.     \@StringSwitchNext
  4612. \catcode`\@ = 12
  4613. \NameDef{@InputD-stswitch.tip}{}
  4614. \def\SubstituteFontX #1#2#3#4{% 
  4615.     \def#1{% 
  4616.         \message{%
  4617.             \string\SubstituteFontX: No \string#2 font of
  4618.             #3pt, using \noexpand\rm instead.%
  4619.         }%
  4620.         \global\let #1 = #4% 
  4621.         #1% 
  4622.     }%
  4623. \NameDef{@InputD-substf.tip}{}
  4624. \catcode`\@ = 11
  4625. \newbox\@SwapBox
  4626. \def\SwapBoxRegs #1#2{% 
  4627.     \setbox\@SwapBox = \box#1% 
  4628.     \setbox#1 = \box#2% 
  4629.     \setbox#2 = \box\@SwapBox
  4630. \catcode`\@ = 12
  4631. \NameDef{@InputD-swapbox.tip}{}
  4632. \def\TableBeginCentered{% 
  4633.     $$
  4634.         \vbox\bgroup
  4635.             \offinterlineskip
  4636.                                 \tabskip = 0pt
  4637.             \halign\bgroup
  4638. \def\TableEndCentered{% 
  4639.             \crcr
  4640.             \egroup
  4641.         \egroup
  4642.     $$
  4643. \NameDef{@InputD-tabcent.tip}{}
  4644. \catcode`\@ = 11
  4645. \newbox\@WidthSavingBox
  4646. \def\WidthSavingBox #1#2{% 
  4647.     \setbox\@WidthSavingBox = \hbox{#1}% 
  4648.     \MaxDimen{#2}{#2}{\wd\@WidthSavingBox}{\global}% 
  4649.     \box\@WidthSavingBox
  4650. \catcode`\@ = 12
  4651. \NameDef{@InputD-tabswb.tip}{}
  4652. \catcode`\@ = 11
  4653. \newcount\@GenTocEntryLevel
  4654. \def\GenTocEntry #1#2#3#4{%
  4655.     \par
  4656.     \bgroup
  4657.     \global\@GenTocEntryLevel = #1
  4658.     \leftskip = #4
  4659.     \parindent = #2
  4660.     \advance\parindent by -#4
  4661.     \dimen0 = #3
  4662.     \advance\dimen0 by -#2
  4663.     \@GenTocEntry
  4664. \def\@GenTocEntry #1#2#3#4#5#6#7#8{%
  4665.     \rightskip = #1 plus 1in
  4666.     \parfillskip = #2
  4667.     \advance\parfillskip by -#1
  4668.     #7
  4669.     \ifdim #3 > 0pt
  4670.         \setbox0 = \hbox to #3{\hfil.\hfil}
  4671.     \else
  4672.         \setbox0 = \box\voidb@x
  4673.     \fi
  4674.     \leavevmode
  4675.     \hbox to \dimen0 {#5\hfil}%
  4676.     {% 
  4677.         #6% 
  4678.         \unskip
  4679.     }%
  4680.     \ifvoid 0
  4681.         \hfill
  4682.     \else
  4683.         \nobreak\leaders\copy0\hskip #4plus 1fil
  4684.     \fi
  4685.     #8%
  4686.     \par
  4687.     \egroup
  4688. \catcode`\@ = 12
  4689. \NameDef{@InputD-toc-mac.tip}{}
  4690. \def\Today{% 
  4691.     \the\month/\the\day/\the\year
  4692. \NameDef{@InputD-today.tip}{}
  4693. \catcode`\@ = 11
  4694. \def\EndInsertTopInsFix{% 
  4695.     \ifdim\dp0 > 10pt
  4696.         \wlog{\string\endinsert: \string\topinsert
  4697.             material deeper than 10pt}%
  4698.         \dp0 = 10pt
  4699.     \fi
  4700.     \MaxDimen{\dimen0}{\dp0}{0pt}{}
  4701.     \dimen1 = \vsize
  4702.     \advance\dimen1 by -\dimen0
  4703.     \advance\dimen1 by -12pt
  4704.     \ifdim\ht0 > \dimen1
  4705.         \wlog{\string\endinsert: \noexpand\topinsert
  4706.             material too long (\the\ht0),}%
  4707.         \wlog{\EightSpaces shortened to \the\dimen1.}%
  4708.         \ht0 = \dimen1
  4709.     \fi
  4710. \catcode`\@ = 12
  4711. \NameDef{@InputD-topinfix.tip}{}
  4712. \def\Bref #1#2#3{% 
  4713.     #1 (19#2#3)% 
  4714. \NameDef{@InputD-ts-brefm.tip}{}
  4715. \def\td{%
  4716.     \hskip 0.5em plus 0.1em minus 0.1em
  4717.     $\bullet$%
  4718.     \hskip 0.5em plus 0.1em minus 0.1em
  4719. \NameDef{@InputD-ts-bul.tip}{}
  4720. \def\ChapterHeadingTeXIP #1#2{%
  4721.     \setbox 1 = 
  4722.     \vbox to 13pc{
  4723.         \hyphenpenalty = 10000
  4724.         \parindent = 0pt
  4725.         \huge
  4726.         \bf
  4727.         \baselineskip = 21pt
  4728.         \AlwaysBaselineskip
  4729.         \setbox 0 = \hbox{#1}%
  4730.         \copy0
  4731.         \parskip = 3pc
  4732.         \advance\parskip by -\dp0
  4733.         \advance\parskip by -\ht0
  4734.         \advance\parskip by -\baselineskip
  4735.         \wlog{\string\ChapterHeadingTeXIP: computed value
  4736.             of \noexpand\parskip is \the\parskip.}%
  4737.         \spaceskip = 0.3333em
  4738.         \xspaceskip = \spaceskip
  4739.         \rightskip = 0pt plus 4em
  4740.         #2
  4741.         \par
  4742.         \vfil
  4743.     }
  4744.     \box 1
  4745.     \SuppressNextParIndent
  4746. \NameDef{@InputD-ts-chhe.tip}{}
  4747. \catcode`\@ = 11
  4748. \NewCounter{ChapterNo}{\arabic}% 
  4749.     {\TheCounter{ChapterNo}}{\TheCounter{ChapterNo}}
  4750. \def\Chapter{\DblArg{\@Chapter}}%
  4751. \def\@Chapter [#1]#2{% 
  4752.     \ShouldBeRightHandPage
  4753.     \StepCounter{ChapterNo}%
  4754.     \gdef\@LeftRunningHead{#2}%
  4755.     \SetPageLayout{4}
  4756.     \ChapterHeadingTeXIP{\PrintCounter{ChapterNo}}{#2}
  4757.     \WriteToAuxSpecial{toc}{1}% 
  4758.         {\PrintCounter{ChapterNo}}{#1}{\PrintCounter{PageNo}}%
  4759.     \WriteToAuxSpecial{lof}{0}{}{}{}%
  4760.     \WriteToAuxSpecial{lot}{0}{}{}{}%
  4761.     \def\Label ##1{\@Label{##1}{\RefCounter{ChapterNo}}{1}}%
  4762. \NewCounter{AppendixNo}{\Alph}% 
  4763.     {\TheCounter{AppendixNo}}{\TheCounter{AppendixNo}}
  4764. \AddCounterToResetList{SectionNo}{AppendixNo}
  4765. \AddCounterToResetList{AppendixNo}{VolumeNo}
  4766. \def\Appendix{\DblArg{\@Appendix}}%
  4767. \def\@Appendix [#1]#2{% 
  4768.     \NewPageRightHand
  4769.     \StepCounter{AppendixNo}%
  4770.     \ReassignCounter{SectionNo}{\arabic}% 
  4771.         {\PrintCounter{AppendixNo}.\TheCounter{SectionNo}}% 
  4772.         {\PrintCounter{AppendixNo}.\TheCounter{SectionNo}}%
  4773.     \SetPageLayout{4}
  4774.     \ChapterHeadingTeXIP{Appendix \PrintCounter{AppendixNo}}{#2}
  4775.     \WriteToAuxSpecial{toc}{1}% 
  4776.         {\PrintCounter{AppendixNo}}{#1}{\PrintCounter{PageNo}}%
  4777.     \def\Label ##1{\@Label{##1}{\RefCounter{AppendixNo}}{1}}%
  4778.     \ignorespaces
  4779. \def\DoneWithAppendices{%
  4780.     \ReassignCounter{SectionNo}{\alph}%
  4781.         {\TheCounter{ChapterNo}.\TheCounter{SectionNo}}% 
  4782.         {\TheCounter{ChapterNo}.\TheCounter{SectionNo}}
  4783.     \def\Label ##1{\@Label{##1}{\RefCounter{ChapterNo}}{1}}%
  4784. \catcode`\@ = 12
  4785. \NameDef{@InputD-ts-chap.tip}{}
  4786. \catcode`\@ = 11
  4787. \def\@PageRef #1{% 
  4788.     \def\@PageRefResult{}%
  4789.     \@ref{1}{#1}%
  4790.     \if\StringsEqualConditional{\@TheExpandedLabel}{??}%
  4791.         \def\@PageRefResult{??}%
  4792.     \else
  4793.         \if\PrefixConditional{\@TheExpandedLabel}%
  4794.                             {\TheCounter{VolumeNo}-}%
  4795.             \DropPrefix{\@TheExpandedLabel}{\TheCounter{VolumeNo}-}%
  4796.                        {\@TheShortenedLabel}%
  4797.             \edef\@PageRefResult{\@TheShortenedLabel}%
  4798.         \else
  4799.             \edef\@PageRefResult{\@TheExpandedLabel}%
  4800.         \fi
  4801.     \fi
  4802. \catcode`\@ = 12
  4803. \NameDef{@InputD-ts-pager.tip}{}
  4804. \catcode`\@ = 11
  4805. \newcount\@PageRefLimitLow
  4806. \newcount\@PageRefLimitHigh
  4807. \newif\if@CloseByReference
  4808. \newcount\@PageCloseRefCount
  4809. \newcount\@PageNumberActual
  4810. \def\NoSpecialPageRef{%
  4811.     \global\@NoSpecialPageReftrue
  4812. \newif\if@NoSpecialPageRef
  4813. \@NoSpecialPageReffalse
  4814. \def\@PageRef #1{% 
  4815.     \def\@PageRefResult{}%
  4816.     \global\@CloseByReferencefalse
  4817.     \StepCounter{CloseByReferenceCount}%
  4818.     \CounterToRegister{\global\@PageCloseRefCount}%
  4819.         {CloseByReferenceCount}%
  4820.     \@ref{1}{#1}%
  4821.     \if\StringsEqualConditional{\@TheExpandedLabel}{??}%
  4822.         \def\@PageRefResult{??}%
  4823.     \else
  4824.         \if\PrefixConditional
  4825.             {\@TheExpandedLabel}%
  4826.             {\TheCounter{VolumeNo}-}%
  4827.             \DropPrefix{\@TheExpandedLabel}{\TheCounter{VolumeNo}-}%
  4828.                        {\@TheShortenedLabel}%
  4829.             \def\@PageRefResult{\@TheShortenedLabel}%
  4830.             \Label{@READ@-%
  4831.                 \@ThisLabel-\the\@PageCloseRefCount}%
  4832.             \@PageRefLimitLow = \@TheShortenedLabel
  4833.             \advance\@PageRefLimitLow by -1
  4834.             \@PageRefLimitHigh = \@TheShortenedLabel
  4835.             \advance\@PageRefLimitHigh by 1
  4836.             \edef\@Ref@Temp@Name{%
  4837.                 \@LabelRefPrefix @READ@-% 
  4838.                 \@ThisLabel-\the\@PageCloseRefCount
  4839.             }%
  4840.             \if\NameDefinedConditional{\@Ref@Temp@Name}%
  4841.                 \edef\@Ref@Temp@NameTwo{% 
  4842.                     \NameUse{\@Ref@Temp@Name}% 
  4843.                 }%
  4844.                 \wlog{@READ@: 1 \@Ref@Temp@Name / 
  4845.                     \@Ref@Temp@NameTwo}%
  4846.                     \edef\@Ref@Temp@NameThree{%
  4847.                         \expandafter\PickSecondOfTwo
  4848.                             \@Ref@Temp@NameTwo
  4849.                     }%
  4850.                 \wlog{@READ@ 1a: \@Ref@Temp@NameThree}% 
  4851.                 \DropPrefix
  4852.                     {\@Ref@Temp@NameThree}%
  4853.                     {\TheCounter{VolumeNo}-}%
  4854.                     {\@ResultLocalRef}%
  4855.                 \@PageNumberActual = \@ResultLocalRef
  4856.             \else
  4857.                 \wlog{@READ@ 2}%
  4858.                 \@PageNumberActual = \count0
  4859.                 \@PageRefLimitLow = -10
  4860.                 \@PageRefLimitHigh = -10
  4861.             \fi
  4862.             \if\InRangeConditional
  4863.                 {\@PageNumberActual}%
  4864.                 {\@PageRefLimitLow}%
  4865.                 {\@PageRefLimitHigh}%
  4866.                 \wlog{@READ@ 3}%
  4867.                 \@CloseByReferencetrue
  4868.                 \if@NoSpecialPageRef
  4869.                     \@CloseByReferencefalse
  4870.                 \fi
  4871.             \else
  4872.                 \wlog{@READ@ 4}%
  4873.                 \@CloseByReferencefalse
  4874.             \fi
  4875.             \global\@NoSpecialPageReffalse
  4876.             \if@CloseByReference
  4877.                 \ifnum\@PageNumberActual = \@PageRefLimitLow
  4878.                     \wlog{\string\PageRef: Reference "\@ThisLabel,"
  4879.                         on page \the\@PageNumberActual
  4880.                         \space refers to the next page.}%
  4881.                     \def\@PageRefResult{the next}%
  4882.                 \fi
  4883.                 \ifnum\@PageNumberActual = \@TheShortenedLabel
  4884.                     \wlog{\string\PageRef: Reference "\@ThisLabel"
  4885.                         on page \the\@PageNumberActual
  4886.                         \space refers to the current page.}%
  4887.                     \def\@PageRefResult{this}%
  4888.                 \fi
  4889.                 \ifnum\@PageNumberActual = \@PageRefLimitHigh
  4890.                     \wlog{\string\PageRef: Reference "\@ThisLabel"
  4891.                         on page \the\@PageNumberActual
  4892.                         \space refers to the preceding page.}%
  4893.                     \def\@PageRefResult{the previous}%
  4894.                 \fi
  4895.             \fi
  4896.         \else
  4897.             \def\@PageRefResult{\@TheExpandedLabel}%
  4898.         \fi
  4899.     \fi
  4900.     \edef\@PageRefResult{\@PageRefResult}%
  4901. \catcode`\@ = 12
  4902. \NameDef{@InputD-ts-page2.tip}{}
  4903. \catcode`\@ = 11
  4904. \def\PageRef   #1{% 
  4905.     \@PageRef{#1}%
  4906.     \@PageRefResult
  4907.     \@PrintAfterLabel
  4908. \def\Page      #1{% 
  4909.     \PageShortForm~\@PageRef{#1}%
  4910.     \@PageRefResult
  4911.     \@PrintAfterLabel
  4912. \def\OnPage #1{%
  4913.     \@PageRef{#1}%
  4914.     \if@CloseByReference
  4915.         on \@PageRefResult\space page%
  4916.     \else
  4917.         on \PageShortForm~\@PageRefResult
  4918.     \fi
  4919.     \@PrintAfterLabel
  4920. \def\AtPage #1{%
  4921.     \@PageRef{#1}%
  4922.     \if@CloseByReference
  4923.         at \@PageRefResult\space page%
  4924.     \else
  4925.         at \PageShortForm~\@PageRefResult
  4926.     \fi
  4927.     \@PrintAfterLabel
  4928. \def\CommaPage #1{%
  4929.     \@PageRef{#1}%
  4930.     \if@CloseByReference
  4931.         \space on \@PageRefResult\space page%
  4932.         \@PrintAfterLabel
  4933.     \else
  4934.         ,\space
  4935.         \PageShortForm~\@PageRefResult
  4936.         \@PrintAfterLabel
  4937.     \fi
  4938. \def\CommaPageComma{%
  4939.     \@PageRef{,}%
  4940.     \if@CloseByReference
  4941.         \space on \@PageRefResult\space page\space
  4942.     \else
  4943.         ,\space
  4944.         \PageShortForm~\@PageRefResult
  4945.         \@PrintAfterLabel
  4946.         \space
  4947.     \fi
  4948. \def\PageShortForm{p.}
  4949. \def\PagesShortForm{pp.}
  4950. \def\see #1#2{% 
  4951.     see \@SeeSee{#1}{#2}%
  4952. \def\See #1#2{% 
  4953.     See \@SeeSee{#1}{#2}%
  4954. \def\@SeeSee #1#2{%
  4955.     \SectionRef{#1}%
  4956.     \if\StringsEqualConditional{#2}{,}%
  4957.         \CommaPageComma
  4958.         \let\@SeeSeeEnd = \ignorespaces
  4959.     \else
  4960.         \CommaPage
  4961.         #2%
  4962.         \let\@SeeSeeEnd = \relax
  4963.     \fi
  4964.     \@SeeSeeEnd
  4965. \def\ChapterRef #1{% 
  4966.     Chapter~\Ref{#1}%
  4967. \def\SectionRef #1{% 
  4968.     \Ref{#1}%
  4969. \def\ItemRef #1{% 
  4970.     item~\Ref{#1}%
  4971. \def\FigRef #1{% 
  4972.     Fig.~\Ref{#1}%
  4973. \def\FigureRef #1{% 
  4974.     Figure~\Ref{#1}%
  4975. \def\TableRef #1{% 
  4976.     Table~\Ref{#1}%
  4977. \def\AppendixRef #1{% 
  4978.     Appendix~\Ref{#1}%
  4979. \def\PagesRef #1#2{% 
  4980.     \PagesShortForm~\PageRef{#1}--\PageRef{#2}%
  4981. \catcode`\@ = 12
  4982. \NameDef{@InputD-ts-crm.tip}{}
  4983. \newdimen\HsizeTeXIP
  4984. \newdimen\VsizeTeXIP
  4985. \newcount\ClubPenalty
  4986. \newcount\WidowPenalty
  4987. \newcount\InterlinePenalty
  4988. \newcount\BrokenPenalty
  4989. \NameDef{@InputD-ts-dime1.tip}{}
  4990. \newif\ifWritePageLog
  4991. \WritePageLogfalse
  4992. \newwrite\PageLogStream
  4993. \def\WritePageLogFile{%
  4994.     \immediate\openout\PageLogStream = \jobname.plog
  4995.     \WritePageLogtrue
  4996. \newcount\BadnessSave
  4997. \ShowPlainListsfalse
  4998. \catcode`\@ = 11
  4999. \newcount\@PageLayoutCode
  5000. \def\SetPageLayout #1{% 
  5001.     \global\@PageLayoutCode = #1
  5002.     \CheckRange{\@PageLayoutCode}{0}{5}%
  5003.         {\string\SetPageLayout: }
  5004. \SetPageLayout{0}%
  5005. \def\@LeftRunningHead{}
  5006. \def\@RightRunningHead{}
  5007. \newcount\@SavedPageLayoutCode
  5008. \def\NewPageRightHandSpecial{% 
  5009.     \vfill
  5010.     \supereject
  5011.     \ifodd\count0
  5012.         \wlog{\string\NewPageRightHandSpecial: no empty
  5013.             page to generate (\string\count0 = \the\count0)}%
  5014.     \else
  5015.         \hbox{}
  5016.         \@SavedPageLayoutCode = \@PageLayoutCode
  5017.         \SetPageLayout{1}%
  5018.         \wlog{\string\NewPageRightHandSpecial: empty page
  5019.             generated,
  5020.             (\string\count0 = \the\count0).}%
  5021.         \vfill
  5022.         \eject
  5023.         \SetPageLayout{\@SavedPageLayoutCode}%
  5024.     \fi
  5025. \newdimen\OddPagesHorizontalShift
  5026. \newdimen\EvenPagesHorizontalShift
  5027. \newdimen\CurrentPageShift
  5028. \def\plainoutput{% 
  5029.     \@ShowPlainLists
  5030.     \edef\@LeftRunningHead{\@LeftRunningHead}%
  5031.     \edef\@RightRunningHead{\@RightRunningHead}%
  5032.     \ifnum\@PageLayoutCode = 0
  5033.     \else
  5034.         \headline = {}
  5035.         \footline = {}
  5036.     \fi
  5037.     \ifcase\@PageLayoutCode
  5038.     \or
  5039.     \or
  5040.         \global\@PageLayoutCode = 3
  5041.     \or
  5042.         \@PageLayoutCodeThree
  5043.     \or
  5044.         \global\@PageLayoutCode = 5
  5045.     \or
  5046.         \ifodd\count0
  5047.             \headline = {% 
  5048.                 \small\rm
  5049.                 \hfil
  5050.                 \botmark
  5051.                 \hskip 18pt
  5052.                 \PrintCounter{PageNo}%
  5053.             }%
  5054.         \else
  5055.             \headline = {% 
  5056.                 \small\rm
  5057.                 \PrintCounter{PageNo}%
  5058.                 \hskip 18pt
  5059.                 \@LeftRunningHead
  5060.                 \hfil
  5061.             }%
  5062.         \fi
  5063.     \else
  5064.         \errmessage{\string\plainoutput: \string\@PageLayoutCode
  5065.             out of range.}%
  5066.     \fi
  5067.     \setbox 4 = \vbox{%
  5068.         \pagebody
  5069.     }%
  5070.     \ifWritePageLog
  5071.         \immediate\write\PageLogStream{%
  5072.             Part name: \CurrentPartName, Page \the\count0
  5073.         }%
  5074.         \immediate\write\PageLogStream{%
  5075.             Page \the\count0:
  5076.             stretch: \the\pagestretch,
  5077.             shrink: \the\pageshrink,
  5078.             outputpenalty: \the\outputpenalty
  5079.         }%
  5080.         \immediate\write\PageLogStream{%
  5081.             pagefilstretch: \the\pagefilstretch,
  5082.             pagefillstretch: \the\pagefillstretch
  5083.         }%
  5084.         \immediate\write\PageLogStream{%
  5085.             ht 255: \the\ht255,
  5086.             dp 255: \the\dp255
  5087.         }%
  5088.         \NaturalHeight{\dimen0}{255}%
  5089.         \NaturalDepth{\dimen1}{255}%
  5090.         \immediate\write\PageLogStream{%
  5091.             Natural height: \the\dimen0,
  5092.             Natural depth:  \the\dimen1
  5093.         }%
  5094.         \dimen2 = \vsize
  5095.         \advance\dimen2 by -\dimen0
  5096.         \immediate\write\PageLogStream{%
  5097.             Ideal height: \the\vsize,
  5098.             Difference:  \the\dimen2
  5099.         }%
  5100.         \immediate\write\PageLogStream{%
  5101.             badness: \the\BadnessSave,
  5102.             height: \the\ht4,
  5103.             depth: \the\dp4
  5104.         }%
  5105.         \immediate\write\PageLogStream{}%
  5106.     \fi
  5107.     \setbox 5 = \vbox{%
  5108.         \makeheadline
  5109.         \box 4
  5110.         \makefootline
  5111.     }%
  5112.     \@MakeRobustMacros
  5113.     \ifodd\count0
  5114.         \CurrentPageShift = \OddPagesHorizontalShift
  5115.     \else
  5116.         \CurrentPageShift = \EvenPagesHorizontalShift
  5117.     \fi
  5118.     \wlog{Redefined \string\plainoutput (ts-outpu.tip):
  5119.         Shifting: shift amount is \the\CurrentPageShift\space\space
  5120.         (page is \the\pageno).}%
  5121.     \setbox 6 = \vbox{%
  5122.         \moveright\CurrentPageShift \box5
  5123.     }%
  5124.     \shipout\box6
  5125.     \advancepageno
  5126.     \ifnum\outputpenalty > -10000
  5127.     \else
  5128.         \dosupereject
  5129.     \fi
  5130. \def\@PageLayoutCodeThree{%
  5131.     \ifodd\count0
  5132.         \headline = {% 
  5133.             \small\rm
  5134.             \hfil
  5135.             \@RightRunningHead
  5136.             \hskip 18pt
  5137.             \PrintCounter{PageNo}%
  5138.         }%
  5139.     \else
  5140.         \headline = {% 
  5141.             \small\rm
  5142.             \PrintCounter{PageNo}%
  5143.             \hskip 18pt
  5144.             \@LeftRunningHead
  5145.             \hfil
  5146.         }%
  5147.     \fi
  5148. \catcode`\@ = 12
  5149. \NameDef{@InputD-ts-outpu.tip}{}
  5150. \def\SetUpTeXIPValues #1#2#3#4#5#6#7#8#9{%
  5151.     \HsizeTeXIP = #1\relax
  5152.     \hsize = \HsizeTeXIP
  5153.     \VsizeTeXIP = #2\relax
  5154.     \vsize = \VsizeTeXIP
  5155.     \SetParIndent{20pt}
  5156.     \ClubPenalty = #4\relax
  5157.     \clubpenalty = \ClubPenalty
  5158.     \WidowPenalty = #5\relax
  5159.     \widowpenalty = \WidowPenalty
  5160.     \InterlinePenalty = #6\relax
  5161.     \interlinepenalty = \InterlinePenalty
  5162.     \BrokenPenalty = #7\relax
  5163.     \brokenpenalty = \BrokenPenalty
  5164.     \OddPagesHorizontalShift = 0pt
  5165.     \EvenPagesHorizontalShift = 0pt
  5166.     \overfullrule = #8\relax
  5167.     \parskip = #9\relax
  5168. \SetUpTeXIPValues{6.5in}{8.9in}{20pt}{100}{100}{100}{100}% 
  5169.     {5pt}{0pt plus 1pt}
  5170. \NameDef{@InputD-ts-dime2.tip}{}
  5171. \def\SubstituteFont #1#2#3#4{% 
  5172.     \expandafter\newifOF \csname if-\string#1\endcsname
  5173.     \csname if-\string#1true\endcsname
  5174.     \def#1{% 
  5175.         \csname if-\string#1\endcsname
  5176.             \message{%
  5177.                 \string\SubstituteFont: No \string#2 font at
  5178.                 size #3pt, using \noexpand\rm instead.%
  5179.             }%
  5180.             \global\csname if-\string#1false\endcsname
  5181.         \fi
  5182.         #4% 
  5183.     }%
  5184. \NameDef{@InputD-ts-subst.tip}{}
  5185. \font\RmLargerThanLife = cmr17 scaled \magstep5
  5186. \NewFont\Vrm = cmr5
  5187. \NewFont\Vit = cmti7 at 5pt
  5188. \NewFont\Vbf = cmbx5
  5189. \NewFont\Vsc = cmcsc10 at 5pt
  5190. \SubstituteFont{\Vtt}{\tt}{7}{\VIIrm}
  5191. \SubstituteFont{\Vsc}{\sc}{7}{\VIIrm}
  5192. \SubstituteFont{\Vsl}{\sl}{7}{\VIIrm}
  5193. \NewFont\VIIrm = cmr7
  5194. \NewFont\VIIit = cmti7
  5195. \NewFont\VIIbf = cmbx7
  5196. \NewFont\VIIsc = cmcsc10 at 7pt
  5197. \SubstituteFont{\VIItt}{\tt}{7}{\VIIrm}
  5198. \SubstituteFont{\VIIsl}{\sl}{7}{\VIIrm}
  5199. \NewFont\VIIIrm = cmr8
  5200. \NewFont\VIIIit = cmti8
  5201. \NewFont\VIIIbf = cmbx8
  5202. \NewFont\VIIItt = cmtt8
  5203. \NewFont\VIIIsc = cmcsc10 at 8pt
  5204. \SubstituteFont{\VIIIsl}{\sl}{8}{\VIIIrm}
  5205. \NewFont\IXrm = cmr9
  5206. \NewFont\IXit = cmti9
  5207. \NewFont\IXbf = cmbx9
  5208. \NewFont\IXtt = cmtt9
  5209. \NewFont\IXsc = cmcsc10 at 9pt
  5210. \SubstituteFont{\IXsl}{\sl}{9}{\IXrm}
  5211. \NewFont\Xrm = cmr10
  5212. \NewFont\Xit = cmti10
  5213. \NewFont\Xbf = cmbx10
  5214. \NewFont\Xtt = cmtt10
  5215. \NewFont\Xsc = cmcsc10
  5216. \NewFont\Xsl = cmcsc10
  5217. \NewFont\XIIrm = cmr12
  5218. \NewFont\XIIit = cmti12
  5219. \NewFont\XIIbf = cmbx12
  5220. \NewFont\XIItt = cmtt12
  5221. \NewFont\XIIsc = cmcsc10 scaled \magstep 1
  5222. \NewFont\XIIsl = cmcsc10 scaled \magstep 1
  5223. \NewFont\XIIIrm = cmr12 scaled \magstephalf
  5224. \NewFont\XIIIit = cmti12 scaled \magstephalf
  5225. \NewFont\XIIIbf = cmbx12 scaled \magstephalf
  5226. \NewFont\XIIItt = cmtt12 scaled \magstephalf
  5227. \NewFont\XIIIsc = cmcsc10 scaled \magstephalf
  5228. \NewFont\XIIIsl = cmcsc10 scaled \magstephalf
  5229. \NewFont\XVIIrm = cmr12 scaled \magstep 2
  5230. \NewFont\XVIIit = cmti12 scaled \magstep 2
  5231. \NewFont\XVIIbf = cmbx12 scaled \magstep 2
  5232. \NewFont\XVIItt = cmtt12 scaled \magstep 2
  5233. \NewFont\XVIIsc = cmcsc10 scaled \magstep 3
  5234. \NewFont\XVIIsl = cmcsc10 scaled \magstep 3
  5235. \NewFont\XXIrm = cmr17 scaled \magstep 1
  5236. \NewFont\XXIit = cmti12 scaled \magstep 3
  5237. \NewFont\XXIbf = cmbx12 scaled \magstep 3
  5238. \NewFont\XXIsc = cmcsc10 scaled \magstep 4
  5239. \LoadFontOnDemand{\XXItt}{cmtt12 scaled \magstep 3}
  5240. \SubstituteFont{\XXIsl}{\sl}{20.74}{\XXIrm}
  5241. \NewFont\XXVrm = cmr17 scaled \magstep 2
  5242. \NewFont\XXVit = cmti12 scaled \magstep 4
  5243. \NewFont\XXVbf = cmbx12 scaled \magstep 4
  5244. \NewFont\XXVsc = cmcsc10 at 5pt
  5245. \LoadFontOnDemand{\XXVtt}{cmtt12 scaled \magstep 4}
  5246. \SubstituteFont{\XXVsl}{\sl}{20.74}{\XXVrm}
  5247. \DefineFontSizeGroup{V}{5}
  5248. \DefineFontSizeGroup{VII}{7}
  5249. \DefineFontSizeGroup{VIII}{8}
  5250. \DefineFontSizeGroup{IX}{9}
  5251. \DefineFontSizeGroup{X}{10}
  5252. \DefineFontSizeGroup{XII}{12}
  5253. \DefineFontSizeGroup{XIII}{13.14}
  5254. \DefineFontSizeGroup{XVII}{17.28}
  5255. \DefineFontSizeGroup{XXI}{20.74}
  5256. \DefineFontSizeGroup{XXV}{24.88}
  5257. \let\tiny = \FontSizeV
  5258. \let\scriptsize = \FontSizeVII
  5259. \let\footnotesize = \FontSizeVIII
  5260. \let\small = \FontSizeIX
  5261. \let\normalsize = \FontSizeX
  5262. \let\large = \FontSizeXII
  5263. \let\Large = \FontSizeXIII
  5264. \let\LARGE = \FontSizeXVII
  5265. \let\huge  = \FontSizeXXI
  5266. \let\Huge  = \FontSizeXXV
  5267. \def\LineSpaceMultFactor{1.2}
  5268. \normalsize
  5269. \NameDef{@InputD-ts-fonts.tip}{}
  5270. \catcode`\@ = 11
  5271. \newcount\@WidestLoopCounter
  5272. \newbox\@WidestLoopBox
  5273. \def\FindWidestChar #1#2#3#4{% 
  5274.     #1 = 0pt
  5275.     \DoLoop{\@WidestLoopCounter}{#3}{1}{#4}{%
  5276.         \setbox\@WidestLoopBox = \hbox{% 
  5277.             #2%
  5278.             \char\@WidestLoopCounter
  5279.         }%
  5280.         \MaxDimen{#1}{#1}{\wd\@WidestLoopBox}{}%
  5281.     }%
  5282. \catcode`\@ = 12
  5283. \NameDef{@InputD-widestc.tip}{}
  5284. \catcode`\@ = 11
  5285. \newdimen\@WidthLevelOneLabels
  5286. \FindWidestChar{\@WidthLevelOneLabels}{\normalsize\rm}%
  5287.     {`\0}{`\9}
  5288. \setbox 0 = \hbox{.\hskip 1em}
  5289. \advance\@WidthLevelOneLabels by \wd0
  5290. \def\@BeginEnumerateLevelOne{% 
  5291.     \BeginAList{\@WidthLevelOneLabels}{0pt}{1em}%
  5292.         {12pt}{0pt}%
  5293.         {0pt}{15pt}%
  5294. \newdimen\@WidthLevelTwoLabels
  5295. \FindWidestChar{\@WidthLevelTwoLabels}{\normalsize\rm}%
  5296.     {`\a}{`\j}
  5297. \setbox 0 = \hbox{()\hskip 1em}
  5298. \advance\@WidthLevelTwoLabels by \wd0
  5299. \def\@BeginEnumerateLevelTwo{%
  5300.     \BeginAList{\@WidthLevelTwoLabels}{0pt}{10pt}%
  5301.         {6pt}{0pt}%
  5302.         {0pt}{15pt}%
  5303. \newdimen\@WidthLevelThreeLabels
  5304. \setbox 0 = \hbox{viii.\hskip 1em}
  5305. \@WidthLevelThreeLabels = \wd0
  5306. \def\@BeginEnumerateLevelThree{%
  5307.     \BeginAList{\@WidthLevelThreeLabels}{0pt}{10pt}%
  5308.         {6pt}{0pt}%
  5309.         {0pt}{15pt}%
  5310. \newdimen\@WidthLevelFourLabels
  5311. \FindWidestChar{\@WidthLevelFourLabels}{\normalsize\rm}%
  5312.     {`\A}{`\J}
  5313. \setbox0 = \hbox{()\hskip 1em}
  5314. \advance\@WidthLevelFourLabels by \wd0
  5315. \def\@BeginEnumerateLevelFour{%
  5316.     \BeginAList{\@WidthLevelFourLabels}{0pt}{10pt}%
  5317.         {6pt}{0pt}%
  5318.         {0pt}{15pt}%
  5319. \def\EnumerateLevelOneExtended{% 
  5320.     \par
  5321.     \FindWidestChar{\@WidthLevelOneLabels}{\normalsize\rm}%
  5322.     {`\0}{`\9}
  5323.     \multiply\@WidthLevelOneLabels by 2
  5324.     \setbox 0 = \hbox{.\hskip 1em}%
  5325.     \advance\@WidthLevelOneLabels by \wd0
  5326. \catcode`\@ = 12
  5327. \NameDef{@InputD-ts-enum.tip}{}
  5328. \catcode`\@ = 11
  5329. \NewCounter{FigureNo}{\arabic}% 
  5330.     {\TheCounter{ChapterNo}.\TheCounter{FigureNo}}% 
  5331.     {\TheCounter{ChapterNo}.\TheCounter{FigureNo}}%
  5332. \NewCounter{TableNo}{\arabic}% 
  5333.     {\TheCounter{ChapterNo}.\TheCounter{TableNo}}% 
  5334.     {\TheCounter{ChapterNo}.\TheCounter{TableNo}}%
  5335. \AddCounterToResetList{FigureNo}{ChapterNo}
  5336. \AddCounterToResetList{TableNo}{ChapterNo}
  5337. \def\Caption{\DblArg{\@Caption}}
  5338. \def\@Caption [#1]#2{%
  5339.     \errmessage{\string\@Caption: caption out of place, caption
  5340.         text = #1.}%
  5341. \def\BeginFigure{% 
  5342.     \DoFutureLet{\ifx}{[}{\@BeginFigure}{\@BeginFigure[t]}%
  5343. \newif\if@FigureInsertOk
  5344. \def\@BeginFigure[#1]{% 
  5345.     \begingroup
  5346.     \def\@UseThisInsert{}%
  5347.     \@FigureInsertOkfalse
  5348.     \if\StringsEqualConditional{#1}{t}%
  5349.         \def\@UseThisInsert{\topinsert}%
  5350.         \@FigureInsertOktrue
  5351.     \fi
  5352.     \if\StringsEqualConditional{#1}{p}%
  5353.         \def\@UseThisInsert{\pageinsert}%
  5354.         \@FigureInsertOktrue
  5355.     \fi
  5356.     \if@FigureInsertOk
  5357.     \else
  5358.         \errmessage{\string\@BeginFigure: illegal argument
  5359.             "#1." Use [t] instead.}%
  5360.         \def\@UseThisInsert{\topinsert}%
  5361.     \fi
  5362.     \gdef\FigureCaptionText{}%
  5363.     \gdef\FigureCaptionTextLof{}%
  5364.     \StepCounter{FigureNo}%
  5365.     \def\Label ##1{\@Label{##1}{\RefCounter{FigureNo}}{0}}%
  5366.     \def\@Caption [##1]##2{% 
  5367.         \gdef\FigureCaptionTextLof{##1}%
  5368.         \gdef\FigureCaptionText{##2}%
  5369.         \wlog{\noexpand\@Caption (figures), caption text saved:
  5370.                         ##2.}%
  5371.     }%
  5372.     \setbox 0 = \vbox\bgroup
  5373. \def\EndFigure{%
  5374.     \egroup
  5375.     \@UseThisInsert
  5376.         \box0
  5377.         \if\EmptyStringConditional{\FigureCaptionText}%
  5378.         \else
  5379.             \bigskip
  5380.             \CenterOrParagraph{% 
  5381.                 \small
  5382.                 Figure~\PrintCounter{FigureNo}.
  5383.                 \FigureCaptionText
  5384.             }%
  5385.             \WriteToAuxSpecial{lof}{1}{\PrintCounter{FigureNo}}% 
  5386.                 {\FigureCaptionTextLof}{\PrintCounter{PageNo}}%
  5387.         \fi
  5388.     \endinsert
  5389.     \endgroup
  5390. \def\BeginTable{% 
  5391.     \begingroup
  5392.     \gdef\TableCaptionText{}%
  5393.     \gdef\TableCaptionTextLot{}%
  5394.     \StepCounter{TableNo}%
  5395.     \def\Label ##1{\@Label{##1}{\RefCounter{TableNo}}{0}}%
  5396.     \def\@Caption [##1]##2{% 
  5397.         \gdef\TableCaptionText{##2}%
  5398.         \gdef\TableCaptionTextLot{##1}%
  5399.         \wlog{\noexpand\@Caption for tables: ##2}%
  5400.     }%
  5401.     \setbox 0 = \vbox\bgroup
  5402. \def\EndTable{%
  5403.     \egroup
  5404.     \topinsert
  5405.         \if\EmptyStringConditional{\TableCaptionText}%
  5406.         \else
  5407.             \smallskip
  5408.             \CenterOrParagraph{% 
  5409.                 \small
  5410.                 Table~\PrintCounter{TableNo}.
  5411.                 \TableCaptionText}%
  5412.             \WriteToAuxSpecial{lot}{1}{\PrintCounter{TableNo}}% 
  5413.                 {\TableCaptionTextLot}{\PrintCounter{PageNo}}%
  5414.             \smallskip
  5415.         \fi
  5416.         \box0
  5417.     \endinsert
  5418.     \endgroup
  5419. \catcode`\@ = 12
  5420. \NameDef{@InputD-ts-float.tip}{}
  5421. \catcode`\@ = 11
  5422. \NewCounter{FootNote}{\arabic}% 
  5423.     {\TheCounter{FootNote}}%
  5424.     {\PrintCounter{FootNote}}
  5425. \AddCounterToResetList{FootNote}{ChapterNo}
  5426. \def\FootNote #1{% 
  5427.     \StepCounter{FootNote}%
  5428.     \footnote{$^{\PrintCounter{FootNote}}$}% 
  5429.         {% 
  5430.             \small
  5431.             \baselineskip = 9pt
  5432.             #1% 
  5433.         }%
  5434. \skip\footins = 18.4pt
  5435. \def\@PrintFootnotePlain{%
  5436.     \vskip 12pt plus 2pt minus 1pt
  5437.     \hrule width 5pc height 0.4pt depth 0pt
  5438.     \vskip 6pt plus 1pt minus 0.5pt
  5439.     \unvbox\footins
  5440. \catcode`\@ = 12
  5441. \NameDef{@InputD-ts-foot.tip}{}
  5442. \NewCounter{VolumeNo}{\Roman}% 
  5443.     {\TheCounter{VolumeNo}}{\TheCounter{VolumeNo}}
  5444. \ReassignCounter{PageNo}{\arabic}% 
  5445.     {\TheCounter{PageNo}}% 
  5446.     {\TheCounter{VolumeNo}-\TheCounter{PageNo}}
  5447. \NameDef{@InputD-ts-vol.tip}{}
  5448. \catcode`\@ = 11
  5449. \NewCounter{SectionNo}{\arabic}% 
  5450.     {\PrintCounter{ChapterNo}.\TheCounter{SectionNo}}%
  5451.     {\PrintCounter{ChapterNo}.\TheCounter{SectionNo}}%
  5452. \NewCounter{SubSectionNo}{\arabic}%
  5453.     {\PrintCounter{SectionNo}.\TheCounter{SubSectionNo}}%
  5454.     {\PrintCounter{SectionNo}.\TheCounter{SubSectionNo}}%
  5455. \NewCounter{SubSubSectionNo}{\arabic}%
  5456.     {\PrintCounter{SubSectionNo}.\TheCounter{SubSubSectionNo}}%
  5457.     {\PrintCounter{SubSectionNo}.\TheCounter{SubSubSectionNo}}%
  5458. \NewCounter{CloseByReferenceCount}{\arabic}%
  5459.     {\PrintCounter{CloseByReferenceCount}}%
  5460.     {\PrintCounter{CloseByReferenceCount}}%
  5461. \AddCounterToResetList{SectionNo}{ChapterNo}%
  5462. \AddCounterToResetList{SubSectionNo}{SectionNo}%
  5463. \AddCounterToResetList{SubSubSectionNo}{SubSectionNo}%
  5464. \def\Section{\DblArg{\@Section}}%
  5465. \def\@Section [#1]#2{% 
  5466.     \StepCounter{SectionNo}%
  5467.     \def\Label ##1{\@Label{##1}{\RefCounter{SectionNo}}{1}}%
  5468.     \GenericHeading{2}{36pt plus 10pt minus 2pt}% 
  5469.         {1}{1}{1}{24pt}{0}%
  5470.         {\Large\baselineskip = 15pt}{-13pt}% 
  5471.         {\PrintCounter{SectionNo}}{#2}{#1}% 
  5472.     \gdef\EveryParB{%
  5473.         {%
  5474.             \@MakeRobustMacros
  5475.             \def\LineBreakToc{ }%
  5476.             \def\LineBreakHeading{ }%
  5477.             \def\IgnoreInRunningHead ####1{%
  5478.                 \relax$\ldots$%
  5479.             }%
  5480.             \mark{#2}%
  5481.         }%
  5482.     }%
  5483. \def\SubSection{\DblArg{\@SubSection}}%
  5484. \def\@SubSection [#1]#2{% 
  5485.     \StepCounter{SubSectionNo}%
  5486.     \def\Label ##1{\@Label{##1}{\RefCounter{SubSectionNo}}{1}}%
  5487.     \GenericHeading{3}{30pt plus 8pt minus 2pt}% 
  5488.         {1}{1}{1}{18pt}{0}% 
  5489.         {\large\baselineskip = 14pt}{-12pt}% 
  5490.         {\PrintCounter{SubSectionNo}}{#2}{#1}% 
  5491. \def\SubSubSection{\DblArg{\@SubSubSection}}%
  5492. \def\@SubSubSection [#1]#2{% 
  5493.     \ifnum\TheCounter{SubSectionNo} = 0
  5494.         \errhelp = {The reason is probably that \string\Section
  5495.             occurred directly followed by \string\SubSubSection
  5496.             (that is you forgot a \string\SubSection in between).}%
  5497.         \errmessage{\string\@SubSubSection: Counter "SubSectionNo"
  5498.             is zero.}%
  5499.     \fi
  5500.     \StepCounter{SubSubSectionNo}%
  5501.     \def\Label ##1{\@Label{##1}{\RefCounter{SubSubSectionNo}}{1}}%
  5502.     \GenericHeading{4}{24pt plus 6pt minus 1pt}% 
  5503.         {1}{1}{1}{18pt}{0}% 
  5504.         {\normalsize}{-10pt}% 
  5505.         {\PrintCounter{SubSubSectionNo}}{#2}{#1}%
  5506. \catcode`\@ = 12
  5507. \NameDef{@InputD-ts-shead.tip}{}
  5508. \NameDef{@InputD-ts-hall.tip}{}
  5509. \catcode`\@ = 11
  5510. \def\label{\Label}
  5511. \def\WriteCountersToAuxFile{%
  5512.     \@WriteCounter{VolumeNo}%
  5513.     \@WriteCounter{ChapterNo}%
  5514.     \@WriteCounter{AppendixNo}%
  5515.     \@WriteCounter{SectionNo}%
  5516.     \@WriteCounter{SubSectionNo}%
  5517.     \@WriteCounter{SubSubSectionNo}%
  5518.     \@WriteCounter{PageNo}%
  5519.     \@WriteCounter{SWPageNo}%
  5520.     \@WriteCounter{FigureNo}%
  5521.     \@WriteCounter{TableNo}%
  5522.     \@WriteCounter{CloseByReferenceCount}%
  5523. \def\Label #1{% 
  5524.     \message{\noexpand\Label currently undefined,
  5525.         label "#1" ignored.}%
  5526. \catcode`\@ = 12
  5527. \NameDef{@InputD-ts-hmore.tip}{}
  5528. \lefthyphenmin  = 2
  5529. \righthyphenmin = 3
  5530. \hyphenation{Ado-be}
  5531. \hyphenation{after}
  5532. \hyphenation{base-line-skip}
  5533. \hyphenation{man-u-script}
  5534. \hyphenation{obey-lines}
  5535. \hyphenation{obey-spaces}
  5536. \hyphenation{other-wise}
  5537. \NameDef{@InputD-ts-hyph.tip}{}
  5538. \catcode`\@ = 11
  5539. \def\@BeginItemizeLevelOne{% 
  5540.     \BeginAList
  5541.         {15pt}{0pt}{15pt}% 
  5542.         {12pt}{0pt}%
  5543.         {0pt}{15pt}%
  5544. \def\@BeginItemizeLevelTwo{% 
  5545.     \BeginAList
  5546.         {15pt}{0pt}{15pt}% 
  5547.         {6pt}{0pt}%
  5548.         {0pt}{15pt}%
  5549. \def\@BeginItemizeLevelThree{%
  5550.     \BeginAList
  5551.         {15pt}{0pt}{15pt}% 
  5552.         {4pt}{0pt}%
  5553.         {0pt}{15pt}%
  5554. \def\@BeginItemizeLevelFour{%
  5555.     \BeginAList
  5556.         {15pt}{0pt}{15pt}% 
  5557.         {4pt}{0pt}%
  5558.         {0pt}{15pt}%
  5559. \catcode`\@ = 12
  5560. \NameDef{@InputD-ts-itize.tip}{}
  5561. \def\TeXIP{%
  5562.     \TeX{} in Practice%
  5563. \def\WEB{% 
  5564.     {\tt WEB}% 
  5565. \NameDef{@InputD-ts-lazy.tip}{}
  5566. \def\EntryIntolof #1#2#3#4{% 
  5567.     \ifcase #1
  5568.         \MaxVskip{12pt}%
  5569.     \or
  5570.         \GenTocEntry{#1}{10pt}{50pt}{50pt}{25pt}%
  5571.             {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
  5572.     \else
  5573.         \errmessage{\string\EntryIntolof/lot: illegal level.}%
  5574.     \fi
  5575. \let\EntryIntolot = \EntryIntolof
  5576. \NameDef{@InputD-ts-loft.tip}{}
  5577. \def\PS{{\sc Post\-Script}}
  5578. \font\MetafontLogoFont = logo10 scaled \magstep0
  5579. \def\MF{{\MetafontLogoFont METAFONT}}
  5580. \def\textfontii{\the\textfont2}
  5581. \def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
  5582.     {\textfontii M}\kern-.125em{\textfontii S}-\TeX}
  5583. \def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em
  5584.     T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
  5585. \NameDef{@InputD-ts-logo.tip}{}
  5586. \catcode`\@ = 11
  5587. \def\@MakeRobustMacros{% 
  5588.     \TreatAsRobust\rm
  5589.     \TreatAsRobust\bf
  5590.     \TreatAsRobust\it
  5591.     \TreatAsRobust\tt
  5592.     \TreatAsRobust\sc
  5593.     \TreatAsRobust\mac
  5594.     \TreatAsRobust\break
  5595.     \TreatAsRobust\dots
  5596.     \TreatAsRobust\MF
  5597.     \TreatAsRobust\TeX
  5598.     \TreatAsRobust\LaTeX
  5599.     \TreatAsRobust\PS
  5600.     \TreatAsRobust\AmSTeX
  5601.     \TreatAsRobust\ldots
  5602.     \TreatAsRobust\cdots
  5603.     \TreatAsRobust\dots
  5604.     \def\MakeRobust ##1{%
  5605.         \noexpand\MakeRobust
  5606.         \noexpand##1%
  5607.     }%
  5608. \catcode`\@ = 12
  5609. \NameDef{@InputD-ts-robst.tip}{}
  5610. \def\TeXIPVersionNumber{1.0}
  5611. \NameDef{@InputD-ts-vers.tip}{}
  5612. \def\MyNarrower{\narrower\narrower}
  5613. \frenchspacing
  5614. \NameDef{@InputD-ts-set.tip}{}
  5615. \def\EntryIntotoc #1#2#3#4{% 
  5616.     \par
  5617.     \ifcase #1
  5618.         \bigskip
  5619.     \or
  5620.         \bigskip
  5621.     \else
  5622.         \relax
  5623.     \fi
  5624.     \ifcase #1
  5625.         \GenTocEntry{0}{0pt}{20pt}{20pt}{30pt}% 
  5626.             {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
  5627.     \or
  5628.         \GenTocEntry{1}{0pt}{40pt}{40pt}{30pt}% 
  5629.             {0pt}{10pt}{0.5in}{#2}{#3}{\bf}{#4}
  5630.     \or
  5631.         \GenTocEntry{2}{10pt}{50pt}{50pt}{30pt}% 
  5632.             {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
  5633.     \or
  5634.         \GenTocEntry{#1}{20pt}{60pt}{60pt}{30pt}% 
  5635.             {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
  5636.     \or
  5637.     \else
  5638.         \errmessage{\string\EntryIntotoc: no level #1 subdivision
  5639.             in this series.}
  5640.     \fi
  5641. \NameDef{@InputD-ts-toc.tip}{}
  5642. \newdimen\LeftSkipVerbatim
  5643. \LeftSkipVerbatim = 0.3in
  5644. \def\VerbatimFont{\tt}
  5645. \newcount\VerbatimTab
  5646. \VerbatimTab = 8
  5647. \newif\ifVerbLineNum
  5648. \VerbLineNumtrue
  5649. \newskip\DisplayVerbatimVskip
  5650. \DisplayVerbatimVskip = 0pt plus 2pt minus 1pt
  5651. \newif\ifCaretTab
  5652. \CaretTabfalse
  5653. \newtoks\VerbatimTokBegin   \VerbatimTokBegin = {}
  5654. \newtoks\VerbatimTokLine    \VerbatimTokLine = {}
  5655. \newtoks\VerbatimTokEnd     \VerbatimTokEnd = {}
  5656. \catcode`\@ = 11
  5657. \newdimen\@VerbatimLr
  5658. \@VerbatimLr = 1.5pt
  5659. \newif\if@IgnoreFirstNewLine
  5660. \if\FormatIsLaTeXConditional
  5661.     \def\@VerbatimPar{\par\@@par}% 
  5662.     \def\@VerbatimNlf{\tiny}% 
  5663. \else
  5664.     \def\@VerbatimPar{\par}% 
  5665.     \def\@VerbatimNlf{\tiny}% 
  5666. \newcount\@VerbatimLineNumber
  5667. \newif\if@VerbatimL
  5668. \newdimen\Verb@TabSize
  5669. \def\@VObeySpaces{% 
  5670.     \MakeActive{\ }% 
  5671.     \@@VObeySpaces
  5672. \MakeActive{\ }%
  5673. \gdef\@@VObeySpaces{%
  5674. \def {\VerbControlSpace}% 
  5675. \def\@VObeyTabs{% 
  5676.     \MakeTabActive
  5677.     \@@VObeyTabs
  5678.     \MakeTabActive
  5679.     \gdef\@@VObeyTabs{% 
  5680.         \def^^I{\Verb@Tab}%
  5681.     }
  5682. \def\Verb@Tab{% 
  5683.     \leavevmode
  5684.     \egroup
  5685.     \dimen0 = \wd0
  5686.     \divide\dimen0 by \Verb@TabSize
  5687.     \advance\dimen0 by 1sp
  5688.     \multiply\dimen0 by \Verb@TabSize
  5689.     \wd0 = \dimen0
  5690.     \box0
  5691.     \setbox 0 = \hbox\bgroup
  5692. \def\@VObeyEol{% 
  5693.     \MakeEolActive % 
  5694.     \@@VObeyEol
  5695.     \MakeEolActive % 
  5696.     \gdef\@@VObeyEol{% 
  5697.         \let^^M = \Verb@Eol% 
  5698.     }% 
  5699. \def\Verb@Eol{%
  5700.     \if@IgnoreFirstNewLine
  5701.     \else
  5702.         \leavevmode
  5703.         \egroup
  5704.         \box 0
  5705.         \endgraf
  5706.     \fi
  5707.     \@IgnoreFirstNewLinefalse
  5708. \def\@VCaret{% 
  5709.     \MakeActive{\^}% 
  5710.     \@@VCaret
  5711.     \MakeActive{\^}% 
  5712.     \gdef\@@VCaret{% 
  5713.         \def^{% 
  5714.             \futurelet\@VSymbol\@@VCaretTwo
  5715.         }% 
  5716.         \def\@@VCaretTwo{%
  5717.             \ifx \@VSymbol^%
  5718.                 \let\@VerbNext = \@@VCaretThree
  5719.             \else
  5720.                 \CaretText
  5721.                 \let\@VerbNext = \relax
  5722.             \fi
  5723.             \@VerbNext
  5724.         }% 
  5725.         \def\@@VCaretThree ^{%
  5726.             \futurelet\@VSymbol\@@VCaretFour
  5727.         }%
  5728.         \def\@@VCaretFour{% 
  5729.             \ifx \@VSymbol I%
  5730.                 \Verb@Tab
  5731.             \else
  5732.                 \CaretText\CaretText\@VSymbol
  5733.             \fi
  5734.             \GobbleOne
  5735.         }% 
  5736.     }% 
  5737. \def\@StartVerbatim #1{% 
  5738.     \begingroup
  5739.     \@VerbatimPar
  5740.     \vskip\DisplayVerbatimVskip
  5741.     \if\FormatIsLaTeXConditional
  5742.     \else
  5743.         \CancelSuppressNextParIndent
  5744.     \fi
  5745.     \setbox0 = \hbox{\VerbatimFont X}
  5746.     \Verb@TabSize = \wd0
  5747.     \multiply\Verb@TabSize by \VerbatimTab
  5748.     \parskip = 0pt
  5749.     \parindent = 0pt
  5750.     \leftskip = \LeftSkipVerbatim
  5751.     \rightskip = 0pt
  5752.     \parfillskip = 0pt plus 1fil
  5753.     \spaceskip = 0pt
  5754.     \xspaceskip = 0pt
  5755.     \VerbatimFont
  5756.     \if@VerbatimL
  5757.     \else
  5758.         \global\@VerbatimLineNumber = 0
  5759.     \fi
  5760.     \global\@VerbatimLfalse
  5761.     \ifnum #1 = 0
  5762.         \@IgnoreFirstNewLinetrue
  5763.     \else
  5764.         \@IgnoreFirstNewLinefalse
  5765.     \fi
  5766.     \if\FormatIsLaTeXConditional
  5767.         \everypar = {\EveryParZ}%
  5768.     \fi
  5769.     \def\EveryParZ{% 
  5770.         \the\VerbatimTokLine
  5771.         \global\advance\@VerbatimLineNumber by 1
  5772.         \ifVerbLineNum
  5773.             \raise \@VerbatimLr \hbox to 0pt{% 
  5774.                 \hss
  5775.                 \@VerbatimNlf
  5776.                 \the\@VerbatimLineNumber
  5777.                 \hskip 10pt
  5778.             }% 
  5779.         \fi
  5780.         \setbox 0 = \hbox\bgroup
  5781.     }%
  5782.     \MkOthers
  5783.     \@VObeySpaces
  5784.     \@VObeyTabs
  5785.     \@VObeyEol
  5786.     \ifCaretTab
  5787.         \@VCaret
  5788.     \fi
  5789. \def\@DoneVerbatim{%
  5790.     \endgroup
  5791.     \vskip\DisplayVerbatimVskip
  5792.     \def\@VerbatimEndSpecialDeal{}%
  5793.     \if\FormatIsLaTeXConditional
  5794.     \else
  5795.         \def\@VerbatimEndSpecialDeal{%
  5796.             \ParLookAhead
  5797.                 {\SuppressNextParIndent}%
  5798.                 {}
  5799.         }%
  5800.     \fi
  5801.     \@VerbatimEndSpecialDeal
  5802. \def\BeginVerbatim{% 
  5803.     \@StartVerbatim{0}% 
  5804.     \@BeginVerbatim
  5805. {   \catcode `| = 0 % | becomes escape character.
  5806.     \catcode`\\ =12 % \ becomes regular character.
  5807.     |gdef|@BeginVerbatim #1\EndVerbatim{% 
  5808.         #1% 
  5809.         |@DoneVerbatim
  5810.     }
  5811. \def\BVerB{% 
  5812.     \@StartVerbatim{0}% 
  5813.     \@BVerB
  5814.     \catcode `| = 0 % | becomes escape character.
  5815.     \catcode`\\ =12 % \ becomes regular character.
  5816.     |gdef|@BVerB #1\EVerB{% 
  5817.         #1% 
  5818.         |@DoneVerbatim
  5819.     }
  5820. \def\AppendVerbatimL #1{% 
  5821.     \global\@VerbatimLtrue
  5822.     \global\advance\@VerbatimLineNumber by #1\relax
  5823. \def\StartVerbatimL #1{% 
  5824.     \global\@VerbatimLtrue
  5825.     \global\@VerbatimLineNumber = #1\relax
  5826. \newcount\@SaveVerbatimLineNumber
  5827. \def\PushVerbatimL{%
  5828.     \global\@SaveVerbatimLineNumber = \@VerbatimLineNumber  
  5829.     \global\VerbLineNumfalse
  5830. \def\PopVerbatimL{%
  5831.     \global\@VerbatimLineNumber = \@SaveVerbatimLineNumber
  5832.     \global\VerbLineNumtrue
  5833. \catcode`\@ = 12
  5834. \NameDef{@InputD-verbdisp.tip}{}
  5835. \catcode`\@ = 11
  5836. \def\ListVerb #1{% 
  5837.     \@StartVerbatim{1}% 
  5838.     \input #1
  5839.     \@DoneVerbatim
  5840. \def\ListVerbIfFileExists #1{% 
  5841.     \par
  5842.     \if\FileExistsConditional{#1}%
  5843.         \ListVerb{#1}% 
  5844.     \else
  5845.         \centerline{$\bullet$ File {\tt #1} not found. $\bullet$}%
  5846.         \wlog{\string\ListVerbIfFileExists: no file "#1".}%
  5847.     \fi
  5848. \def\ListVerbAndSource #1{% 
  5849.     \ListVerb{#1}% 
  5850.     \input #1
  5851. \catcode`\@ = 12
  5852. \NameDef{@InputD-verb-mac.tip}{}
  5853. \catcode`\@ = 11
  5854. {\catcode`\ = \active
  5855. \gdef\@InitActiveSpace{\edef {\VerbControlSpace}}}
  5856. \newif\if@VerbSpaceControl
  5857. \def\Verb{%
  5858.     \NextCharTest{*}{\@VerbSpaceControltrue \@VerbA}%
  5859.                     {\@VerbSpaceControlfalse\@VerbA}%
  5860. \def\@VerbA #1{%
  5861.     \bgroup
  5862.     \tt
  5863.     \MkOthers
  5864.     \if@VerbSpaceControl
  5865.     \else
  5866.         \catcode`\ = \active
  5867.         \@InitActiveSpace
  5868.     \fi
  5869.     \def\@VerbTemp ##1#1{%
  5870.         ##1%        % Simply print the argument.
  5871.         \egroup     % Undo font change and category code changes.
  5872.     }% 
  5873.     \@VerbTemp
  5874. \catcode`\@ = 12
  5875. \NameDef{@InputD-verb.tip}{}
  5876. \catcode`\@ = 11
  5877. \newwrite\@VStream
  5878. \newif\if@VStreamOpen
  5879. \@VStreamOpenfalse
  5880. \newcount\@VerbWriteCount
  5881. \@VerbWriteCount = 0
  5882. \def\BeginVerbWrite #1#2{%
  5883.     \global\advance\@VerbWriteCount by 1
  5884.     \wlog{\string\BeginVerbWrite: [\the\@VerbWriteCount]}%
  5885.     \DefaultArg{\@VerbWriteBaseName}{#1}{\jobname}%
  5886.     \DefaultArg{\@VerbWriteFileExt}{#2}{ver}% 
  5887.     \xdef\@VerbWriteFileName{\@VerbWriteBaseName.\@VerbWriteFileExt}%
  5888.     \if@VStreamOpen
  5889.         \errmessage{\string\BeginVerbWrite: ERROR, file still open.}%
  5890.     \fi
  5891.     \OpenVerbWrFile{\@VerbWriteBaseName}{\@VerbWriteFileExt}% 
  5892.                     {\@VStream}%
  5893.     \global\@VStreamOpentrue
  5894.     \BeginVerbWr{\@VStream}{\EndVerbWrite}%
  5895. \def\CloseVerbWriteFile{% 
  5896.     \if@VStreamOpen
  5897.         \CloseVerbWrFile{\@VStream}%
  5898.         \global\@VStreamOpenfalse
  5899.     \fi
  5900. \def\AppendVerbWrite{%
  5901.     \wlog{\string\AppendVerbWrite: [\the\@VerbWriteCount]}%
  5902.     \if@VStreamOpen
  5903.     \else
  5904.         \errmessage{\string\AppendVerbWrite: no file open.}%
  5905.     \fi
  5906.     \xdef\@VerbWriteFileName{\@VerbWriteBaseName.\@VerbWriteFileExt}%
  5907.     \BeginVerbWr{\@VStream}{\EndVerbWrite}%
  5908. \def\VerbAsVerb{%
  5909.     \CloseVerbWriteFile
  5910.     {%
  5911.         \CaretTabtrue
  5912.         \ListVerb{\@VerbWriteFileName}%
  5913.     }%
  5914. \def\VerbAsSource{%
  5915.     \CloseVerbWriteFile
  5916.     \input \@VerbWriteFileName \relax
  5917. \catcode`\@ = 12
  5918. \NameDef{@InputD-vwrt-mac.tip}{}
  5919. \catcode`\@ = 11
  5920. \def\@btex{% 
  5921.     \par
  5922.     \bgroup
  5923.     \small
  5924. \def\@etex{%
  5925.     \nobreak
  5926.     \egroup
  5927.     \if\FormatIsLaTeXConditional
  5928.         \def\@EtexEnd{}%
  5929.     \else   
  5930.         \def\@EtexEnd{%
  5931.             \ParLookAhead 
  5932.                 {}%
  5933.                 {\SuppressNextParIndent}%
  5934.         }%
  5935.     \fi
  5936.     \@EtexEnd
  5937. \def\btex{% 
  5938.     \@btex
  5939.     \@StartVerbatim{0}% 
  5940.     \btex@more
  5941.     \catcode `| =  0 % | becomes escape character.
  5942.     \catcode`\\ = 12 % \ now prints.
  5943.     |gdef|btex@more #1\etex{% 
  5944.         #1% 
  5945.         |@DoneVerbatim
  5946.         |@etex
  5947.     }%
  5948. \catcode`\@ = 12
  5949. \NameDef{@InputD-ts-verb1.tip}{}
  5950. \catcode`\@ = 11
  5951. \def\Btexalt{% 
  5952.     \@btex
  5953.     \@StartVerbatim{0}% 
  5954.     \btex@morealt
  5955.     \catcode `| =  0 % | becomes escape character.
  5956.     \catcode`\\ = 12 % \ now prints.
  5957.     |gdef|btex@morealt #1\Etexalt{% 
  5958.         #1% 
  5959.         |@DoneVerbatim
  5960.         |@etex
  5961.     }%
  5962. \catcode`\@ = 12
  5963. \NameDef{@InputD-ts-verb2.tip}{}
  5964. \catcode`\@ = 11
  5965. \def\verb{\Verb}
  5966. \VerbLineNumtrue
  5967. \VerbatimTab = 4
  5968. \DisplayVerbatimVskip = 5pt
  5969. \def\VerbatimFont{\small\tt}%
  5970. \def\ListVerbTeXIP #1{%
  5971.     \par
  5972.     \medskip
  5973.     \vskip 60pt
  5974.     \vskip -60pt
  5975.     \def\ListAsFileName{#1}% 
  5976.     \def\LabelName{code-#1}% 
  5977.     \if\SuffixConditional{#1}{.flf}% 
  5978.         \def\ListAsFileName ##1.flf{\def\ListAsFileName{##1.log}}%
  5979.         \ListAsFileName #1% 
  5980.         \def\LabelName{}%
  5981.     \else
  5982.     \if\SuffixConditional{#1}{.flf2}%
  5983.         \def\ListAsFileName ##1.flf2{\def\ListAsFileName{##1.log}}%
  5984.         \ListAsFileName #1% 
  5985.         \def\LabelName{}%
  5986.     \fi
  5987.     \fi
  5988.     \if\StringsEqualConditional{#1}{\jobname.ver}%
  5989.         \def\ListAsFileName{}%
  5990.         \def\LabelName{}%
  5991.     \fi
  5992.     \if\StringsEqualConditional{#1}{ex-verbwr.ver}
  5993.         \def\LabelName{}% 
  5994.     \fi
  5995.     \if\EmptyStringConditional{\LabelName}% 
  5996.     \else
  5997.         \Label{code-#1}% 
  5998.     \fi
  5999.     \if\EmptyStringConditional{\ListAsFileName}
  6000.     \else
  6001.         \centerline{% 
  6002.             $\bullet$% 
  6003.             \space
  6004.             \tt\ListAsFileName
  6005.             \space
  6006.             $\bullet$% 
  6007.         }%
  6008.     \fi
  6009.     \@btex
  6010.     \@StartVerbatim{1}% 
  6011.     \wlog{[\string\ListVerbTeXIP:}%
  6012.     \input #1
  6013.     \wlog{]}%   svb: this was \message before
  6014.     \@DoneVerbatim
  6015.     \@etex
  6016. \catcode`\@ = 12
  6017. \NameDef{@InputD-ts-verb.tip}{}
  6018. \newif\ifIndexSpecial
  6019. \IndexSpecialfalse
  6020. \catcode`\@ = 11
  6021. \newwrite\IdxStream
  6022. \newwrite\IdxStreamSource
  6023. \newif\if@IndexFilesOpen
  6024. \@IndexFilesOpenfalse
  6025. \def\OpenIndexFiles #1{%
  6026.     \if\EmptyStringConditional{#1}%
  6027.         \gdef\@IndexFileBaseName{\jobname}%
  6028.     \else
  6029.         \gdef\@IndexFileBaseName{#1}%
  6030.     \fi
  6031.     \if@IndexFilesOpen
  6032.         \message{\string\OpenIndexFiles: index files
  6033.             already open.}%
  6034.         \message{\string\OpenIndexFiles: will close
  6035.             old files, open new ones with basename
  6036.             "\@IndexFileBaseName".}%
  6037.         \immediate\closeout\IdxStream
  6038.         \immediate\closeout\IdxStreamSource
  6039.     \fi
  6040.     \@IndexFilesOpentrue
  6041.     \immediate\openout\IdxStream = \@IndexFileBaseName.idx
  6042.     \immediate\openout\IdxStreamSource = \@IndexFileBaseName.idx2
  6043.     \SetIndexStream{\IdxStream}%
  6044. \def\CloseIndexFiles{%
  6045.     \if@IndexFilesOpen
  6046.         \immediate\closeout\IdxStream
  6047.         \immediate\closeout\IdxStreamSource
  6048.         \@IndexFilesOpenfalse
  6049.     \fi
  6050. \def\SetIndexStream #1{%
  6051.     \let\IdxStreamUse = #1%
  6052. \def\Index{% 
  6053.     \begingroup
  6054.     \MkOthersNoCB
  6055.     \@Index
  6056. \xdef\@IndexSuffixMod{}%
  6057. \def\@Index #1{%
  6058.     \let\PrintCounter = \relax
  6059.     \xdef\IndexTemp{%
  6060.         \write\IdxStreamUse{%
  6061.             \string\indexentry{#1\@IndexSuffixMod}%
  6062.                 {\PrintCounter{SWPageNo}}}%
  6063.     }%
  6064.     \ifIndexSpecial
  6065.         \SideNoteText{I: #1}%
  6066.     \fi
  6067.     \xdef\@IndexSuffixMod{}%
  6068.     \endgroup
  6069.     \IndexTemp
  6070. \def\IndexP #1{% 
  6071.     \Index{#1}%
  6072.     #1%
  6073. \def\IndexCS #1{% 
  6074.     \CSToString{\@IndexCSTemp}{#1}%
  6075.     \expandafter\expandafter\expandafter
  6076.         \Index{% 
  6077.             \@IndexCSTemp
  6078.             @% 
  6079.             {% 
  6080.                 \string\tt
  6081.                 \string\string
  6082.                 \string#1% 
  6083.             }% 
  6084.         }%
  6085. \def\IndexCSX #1{% 
  6086.     \CSToString{\@IndexCSTemp}{#1}%
  6087.     \expandafter\expandafter\expandafter
  6088.         \Index{% 
  6089.             #1% 
  6090.             @% 
  6091.             {% 
  6092.                 \string\tt
  6093.                 \string\string
  6094.                 \Backslash#1% 
  6095.             }% 
  6096.         }%
  6097. \def\IndexCSP #1{%
  6098.     \IndexCS{#1}%
  6099.     {\tt\string#1}%
  6100. \def\IndexPrim #1{% 
  6101.     \CSToString{\@IndexCSTemp}{#1}%
  6102.     \expandafter\expandafter\expandafter
  6103.         \Index{\@IndexCSTemp @%
  6104.             {\string\tt\string\string\string#1}|PRIMITIVE}%
  6105. \def\IndexPrimP #1{%
  6106.     \IndexPrim{#1}%
  6107.     {\tt\string #1}%
  6108. \def\IndexPar{\Index{par@\string\PrintParPrimitive}}
  6109. \def\PrintParPrimitive{\BackslashTt{\tt par}}
  6110. \def\IndexBye{\Index{bye@\string\PrintByePrimitive}}
  6111. \def\PrintByePrimitive{\BackslashTt{\tt bye}}
  6112. \def\IndexIf{\Index{if@\string\PrintIf|PRIMITIVE}}
  6113. \def\PrintIf{{\tt\string\if}}
  6114. \def\IndexElse{\Index{else@\string\PrintElse|PRIMITIVE}}
  6115. \def\PrintElse{{\tt\string\else}}
  6116. \def\IndexFi{\Index{fi@\string\PrintFi|PRIMITIVE}}
  6117. \def\PrintFi{{\tt\string\fi}}
  6118. \def\IndexIfCase{\Index{ifcase@\string\PrintIfCase|PRIMITIVE}}
  6119. \def\PrintIfCase{{\tt\string\ifcase}}
  6120. \def\IndexIfCat{\Index{ifcat@\string\PrintIfCat|PRIMITIVE}}
  6121. \def\PrintIfCat{{\tt\string\ifcat}}
  6122. \def\IndexIfX{\Index{ifx@\string\PrintIfX|PRIMITIVE}}
  6123. \def\PrintIfX{{\tt\string\ifx}}
  6124. \def\IndexIfOdd{\Index{ifodd@\string\PrintIfOdd|PRIMITIVE}}
  6125. \def\PrintIfOdd{{\tt\string\ifodd}}
  6126. \def\IndexIfHbox{\Index{ifhbox@\string\PrintIfHbox|PRIMITIVE}}
  6127. \def\PrintIfHbox{{\tt\string\ifhbox}}
  6128. \def\IndexIfVbox{\Index{ifvbox@\string\PrintIfVbox|PRIMITIVE}}
  6129. \def\PrintIfVbox{{\tt\string\ifvbox}}
  6130. \def\IndexIfVoid{\Index{ifvoid@\string\PrintIfVoid|PRIMITIVE}}
  6131. \def\PrintIfVoid{{\tt\string\ifvoid}}
  6132. \def\IndexIfNum{\Index{ifnum@\string\PrintIfNum|PRIMITIVE}}
  6133. \def\PrintIfNum{{\tt\string\ifnum}}
  6134. \def\IndexIfDim{\Index{ifdim@\string\PrintIfDim|PRIMITIVE}}
  6135. \def\PrintIfDim{{\tt\string\ifdim}}
  6136. \def\IndexIfHmode{\Index{ifhmode@\string\PrintIfHmode|PRIMITIVE}}
  6137. \def\PrintIfHmode{{\tt\string\ifhmode}}
  6138. \def\IndexIfVmode{\Index{ifvmode@\string\PrintIfVmode|PRIMITIVE}}
  6139. \def\PrintIfVmode{{\tt\string\ifvmode}}
  6140. \def\IndexIfMmode{\Index{ifvmode@\string\PrintIfMmode|PRIMITIVE}}
  6141. \def\PrintIfMmode{{\tt\string\ifvmode}}
  6142. \def\IndexIfInner{\Index{ifinner@\string\PrintIfInner|PRIMITIVE}}
  6143. \def\PrintIfInner{{\tt\string\ifinner}}
  6144. \def\IndexIfEof{\Index{ifeof@\string\PrintIfEof|PRIMITIVE}}
  6145. \def\PrintIfEof{{\tt\string\ifeof}}%
  6146. \def\IndexIfTrue{\Index{iftrue@\string\PrintIfTrue|PRIMITIVE}}
  6147. \def\PrintIfTrue{{\tt\string\iftrue}}%
  6148. \def\IndexIfFalse{\Index{iffalse@\string\PrintIfFalse|PRIMITIVE}}
  6149. \def\PrintIfFalse{{\tt\string\iffalse}}%
  6150. \def\IndexRepeat{\Index{repeat@\string\PrintRepeat}}
  6151. \def\PrintRepeat{{\tt\string\repeat}}%
  6152. \xdef\@IndexSuffixMod{}%
  6153. \def\IndexPSet #1{%
  6154.     \CSToString{\@IndexPSetResult}{#1}%
  6155.     \xdef\@IndexSuffixMod{|IndexP\@IndexPSetResult}%
  6156. \def\IndexPit #1{{\it #1}}
  6157. \def\IndexPbf #1{{\bf #1}}
  6158. \catcode`\@ = 12
  6159. \NameDef{@InputD-ts-wind.tip}{}
  6160. \def\WriteCounterOutImmediately #1#2{%
  6161.     \OpenGenericOStream{#1}%
  6162.     \immediate\write\GenericOStream
  6163.         {\PrintCounter{#2}}%
  6164.     \CloseGenericOStream
  6165. \NameDef{@InputD-ts-writc.tip}{}
  6166. \catcode`\@ = 11
  6167. \newdimen\@VtboxDim
  6168. \newbox\@VtboxBox
  6169. \def\Vtbox #1#2{%
  6170.     \@VtboxDim = \ht#1%
  6171.     \advance\@VtboxDim by \dp#1%
  6172.     \setbox\@VtboxBox = \vbox{\unvcopy #1}%
  6173.     \advance\@VtboxDim by -\ht\@VtboxBox
  6174.     \advance\@VtboxDim by -\dp\@VtboxBox
  6175.     #2\setbox #1 = \vtop spread \@VtboxDim {\unvbox #1}%
  6176. \catcode`\@ = 12
  6177. \NameDef{@InputD-vtbox.tip}{}
  6178. \def\WritingParShape{%
  6179.     \wlog{\string\WritingParShape: begin}%
  6180.     \wlog{}%
  6181.     \wlog{\string\pretolerance: \the\pretolerance}%
  6182.     \wlog{\string\tolerance: \the\tolerance}%
  6183.     \wlog{\string\prevgraf: \the\prevgraf}%
  6184.     \wlog{}%
  6185.     \wlog{\string\parskip: \the\parskip}%
  6186.     \wlog{\string\baselineskip: \the\baselineskip}%
  6187.     \wlog{\string\lineskip: \the\lineskip}%
  6188.     \wlog{\string\lineskiplimit: \the\lineskiplimit}%
  6189.     \wlog{}%
  6190.     \wlog{\string\parindent: \the\parindent}%
  6191.     \wlog{\string\hsize: \the\hsize}%
  6192.     \wlog{\string\leftskip: \the\leftskip}%
  6193.     \wlog{\string\rightskip: \the\rightskip}%
  6194.     \wlog{\string\parfillskip: \the\parfillskip}%
  6195.     \wlog{\string\spaceskip: \the\spaceskip}%
  6196.     \wlog{\string\xspaceskip: \the\xspaceskip}%
  6197.     \wlog{}%
  6198.     \wlog{\string\hyphenpenalty: \the\hyphenpenalty}%
  6199.     \wlog{\string\exhyphenpenalty: \the\exhyphenpenalty}%
  6200.     \wlog{\string\lefthyphenmin: \the\lefthyphenmin}%
  6201.     \wlog{\string\righthyphenmin: \the\righthyphenmin}%
  6202.     \wlog{\string\lefthyphenmin: \the\lefthyphenmin}%
  6203.     \wlog{}%
  6204.     \wlog{\string\adjdemerits: \the\adjdemerits}%
  6205.     \wlog{\string\doublehyphendemerits: \the\doublehyphendemerits}%
  6206.     \wlog{\string\finalhyphendemerits: \the\finalhyphendemerits}%
  6207.     \wlog{\string\linepenalty: \the\linepenalty}%
  6208.     \wlog{\string\sfcode\string\`.: \the\sfcode`\.}%
  6209.     \wlog{\string\hyphenchar: \the\hyphenchar\tenrm}%
  6210.     \wlog{}%
  6211.     \wlog{\string\binoppenalty: \the\binoppenalty}%
  6212.     \wlog{\string\relpenalty: \the\relpenalty}%
  6213.     \wlog{}%
  6214.     \wlog{\string\everypar: \the\everypar}%
  6215.     \wlog{\string\WritingParShape: end}%
  6216. \NameDef{@InputD-wl-parcp.tip}{}
  6217. \catcode`\@ = 11
  6218. \newwrite\@VerbArgStream
  6219. \def\WriteVerbatimArgument #1#2{%
  6220.     \immediate\openout\@VerbArgStream = #1
  6221.     \def\@AfterWriteVerbatimArgument{#2}%
  6222.     \begingroup
  6223.         \MkOthersNoCB
  6224.         \@WriteVerbatimArgument
  6225. \def\@WriteVerbatimArgument #1{%
  6226.         \immediate\write\@VerbArgStream{#1}%
  6227.         \immediate\closeout\@VerbArgStream
  6228.     \endgroup
  6229.     \@AfterWriteVerbatimArgument
  6230. \catcode`\@ = 12
  6231. \NameDef{@InputD-wrverbar.tip}{}
  6232. \catcode`\@ = 11
  6233. \newcount\X@ParShapeCountA
  6234. \newcount\X@ParShapeCountB
  6235. \newcount\X@ParShapeCountC
  6236. \newdimen\X@ParShapeDimenA
  6237. \newdimen\X@ParShapeDimenB
  6238. \def\XParShape{%
  6239.     \def\X@ParShapeCollect{ }%
  6240.     \X@ParShapeCountC = 0
  6241.     \afterassignment\X@ParShapeB
  6242.     \X@ParShapeCountA
  6243. \def\X@ParShapeB{%
  6244.     \ifnum\X@ParShapeCountA = 0
  6245.         \let\@XParShapeNext = \X@ParShapeD
  6246.     \else
  6247.         \advance\X@ParShapeCountA by -1
  6248.         \let\@XParShapeNext = \X@ParShapeC
  6249.     \fi
  6250.     \@XParShapeNext
  6251. \def\X@ParShapeD{%
  6252.     \parshape = \X@ParShapeCountC\X@ParShapeCollect
  6253. \def\X@ParShapeC #1 #2 #3 #4 #5 {%
  6254.     \message{\string\X@ParShapeC: #1, #2, #3, #4, #5}%
  6255.     \X@ParShapeDimenA = #2% 
  6256.     \X@ParShapeDimenB = #4% 
  6257.     \DoLoop{\X@ParShapeCountB}{1}{1}{#1}%
  6258.         {% 
  6259.             \edef\X@ParShapeCollect{%
  6260.                 \space
  6261.                 \X@ParShapeCollect
  6262.                 \the\X@ParShapeDimenA
  6263.                 \space
  6264.                 \the\X@ParShapeDimenB
  6265.                 \space
  6266.             }%
  6267.             \advance\X@ParShapeCountC by 1
  6268.             \advance\X@ParShapeDimenA by #3\relax
  6269.             \advance\X@ParShapeDimenB by #5\relax
  6270.         }%
  6271.     \X@ParShapeB
  6272. \catcode`\@ = 12
  6273. \NameDef{@InputD-x-parsh.tip}{}
  6274. \newif\ifInputDVerbose
  6275. \InputDVerbosefalse
  6276. \catcode`\@ = 11
  6277. \newif\if@InputDList
  6278. \@InputDListfalse
  6279. \def\@InputDPrefix{@InputD-}
  6280. \NameDef{\@InputDPrefix namedef.tip}{}
  6281. \def\InputD #1{% 
  6282.     \if\NameDefinedConditional{\@InputDPrefix #1}%
  6283.         \ifInputDVerbose
  6284.             \wlog{\string\InputD: file "#1" was read-in before.}%
  6285.         \fi
  6286.     \else
  6287.         \NameDef{\@InputDPrefix #1}{}% 
  6288.         \input #1
  6289.         \if@InputDList
  6290.             \immediate\write\@InputDStream{#1}% 
  6291.         \fi
  6292.     \fi
  6293. \catcode`\@ = 12
  6294. \dump
  6295.